public void Render(Camera cam, int program) { renderObject.Dispose(); renderObject = new RenderObject(new Vertex[6] { new Vertex(cam.WorldToScreenSpace(new Vector4(-Size.X / 2, Size.Y / 2, 0, 1)), new Vector2(0, 1)), new Vertex(cam.WorldToScreenSpace(new Vector4(Size.X / 2, Size.Y / 2, 0, 1)), new Vector2(1, 1)), new Vertex(cam.WorldToScreenSpace(new Vector4(-Size.X / 2, -Size.Y / 2, 0, 1)), new Vector2(0, 0)), new Vertex(cam.WorldToScreenSpace(new Vector4(Size.X / 2, Size.Y / 2, 0, 1)), new Vector2(1, 1)), new Vertex(cam.WorldToScreenSpace(new Vector4(Size.X / 2, -Size.Y / 2, 0, 1)), new Vector2(1, 0)), new Vertex(cam.WorldToScreenSpace(new Vector4(-Size.X / 2, -Size.Y / 2, 0, 1)), new Vector2(0, 0)) }, program); renderObject.Render(); }
protected override void OnRenderFrame(object sender, FrameEventArgs e) { if (!Enabled) { return; } _rendering = true; // Clear the used buffer to paint a new frame onto it GL.Clear(ClearBufferMask.ColorBufferBit); // Declare that we will use this program GL.UseProgram(Window.ColoredProgram); // Get projection matrix and make shaders to compute with this matrix Matrix4 projection = MainWindow.GetProjection(Window.Width, Window.Height); // Render all objects, overlaying other objects rendered before var lines = new List <List <System.Numerics.Vector2> >(_lines); foreach (var l in lines) { var ro = new RenderObject( ObjectFactory.Curve(l, Color4.White), Window.ColoredProgram) { Scale = new Vector3(Scale, Scale, 1) }; ro.Render(ref projection); ro.Dispose(); } Console.WriteLine($"{lines.Count} {Enabled}"); foreach (RPhysicalObject obj in _pObjs) { obj.Render(ref projection); } if (_selected != null) { _selectMarker.Render(ref projection); } // Swap buffers (currently painting buffer and the buffer that is displayed now) Window.SwapBuffers(); _rendering = false; }
public override void Dispose() { _wave.Dispose(); _circleL.Dispose(); _circleR.Dispose(); _ampLines.Dispose(); _startButton.Dispose(); _timeSlipCheck.Dispose(); _freqSlider.Dispose(); _speedSlider.Dispose(); _freqText.Dispose(); _speedText.Dispose(); _lengthText.Dispose(); GL.DeleteProgram(WaveProgram); GC.SuppressFinalize(this); }