Exemple #1
0
 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();
 }
Exemple #2
0
        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;
        }
Exemple #3
0
 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);
 }