private void Draw() { TinyRendererWrapper.clear(); TinyRendererWrapper.render(); byte[] pixels = buffer.GetData(); Chart.Source = ImageFactory.GetBitmap(pixels, 800, 800, 2400, PixelFormat.Format24bppRgb); }
private void button_Load_Model_Click(object sender, RoutedEventArgs e) { string filePath = getFileNameFromDialog(); int success = TinyRendererWrapper.init(800, 800, 3, buffer); if (success > 0) { success = TinyRendererWrapper.load_model(filePath); if (success > 0) { ModelFilePath.Content = filePath; modelLoaded = true; LoadTexture.IsEnabled = true; } } }
private void button_Load_Texture_Click(object sender, RoutedEventArgs e) { if (!modelLoaded) { return; } string filePath = getFileNameFromDialog(); int success = TinyRendererWrapper.load_texture(filePath); if (success > 0) { TextureFilePath.Content = filePath; loadedSuccessfully = true; tickTimer.IsEnabled = true; Draw(); } }
private void Render_Tick(object sender, EventArgs e) { if (!loadedSuccessfully) { return; } if (paused) { return; } if (Mouse.LeftButton == MouseButtonState.Pressed) { double currentMouseX = Mouse.GetPosition(this).X; double differenceX = Math.Abs(currentMouseX - mouseX); bool right = currentMouseX > mouseX; float direction = right ? 1 : -1; if (differenceX > DRAG_THRESHOLD && differenceX < MAX_DRAG_DISTANCE) { float amount = direction * (float)differenceX / 100.0f; TinyRendererWrapper.rotate(new Vector3(0.0f, amount, 0.0f)); } double currentMouseY = Mouse.GetPosition(this).Y; double differenceY = Math.Abs(currentMouseY - mouseY); bool up = currentMouseY > mouseY; direction = up ? 1 : -1; if (differenceY > DRAG_THRESHOLD && differenceY < MAX_DRAG_DISTANCE) { float amount = direction * (float)differenceY / 100.0f; TinyRendererWrapper.rotate(new Vector3(amount, 0.0f, 0.0f)); } } mouseX = Mouse.GetPosition(this).X; mouseY = Mouse.GetPosition(this).Y; Draw(); }