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; }