Exemplo n.º 1
0
    protected unsafe override void OnDeviceUpdate(object s, OGLDeviceUpdateArgs e)
    {
        var gl = e.gl;

        // Очищаем буфер экрана и буфер глубины (иначе рисоваться все будет поверх старого)
        gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT | OpenGL.GL_STENCIL_BUFFER_BIT);

        gl.Begin(OpenGL.GL_LINE_LOOP);

        gl.Vertex(-1f, -1f);
        gl.Vertex(-1f, 1f);
        gl.Vertex(1f, 1f);
        gl.Vertex(1f, -1f);

        gl.End();

        spline.Draw(gl);

        gl.PointSize(VertexSize);

        lock (locker)
        {
            foreach (Vertex2 v in vertices)
            {
                if (v == ActiveVertex)
                {
                    gl.Color(0.0, 1.0, 0.0, 1.0);
                }
                else if (v == vertices[0] || v == vertices[vertices.Count - 1])
                {
                    gl.Color(0.0, 0.0, 1.0, 1.0);
                }
                else
                {
                    gl.Color(1.0, 0.0, 0.0, 1.0);
                }

                gl.Begin(OpenGL.GL_POINTS);

                gl.Vertex(v.Point.X, v.Point.Y);

                gl.End();
            }
        }

        gl.PointSize(1f);

        gl.Flush();

        gl.Color(1.0, 1.0, 1.0, 1.0);

        return;
    }