unsafe void DrawGLScene() { int count; gl.GetIntegerv(gl.GL_MAX_TEXTURE_UNITS, &count); gl.Viewport(ClientRectangle.Left, ClientRectangle.Top, ClientRectangle.Width, ClientRectangle.Height); gl.MatrixMode(gl.GL_PROJECTION); gl.LoadIdentity(); gluPerspective(45, (float)ClientSize.Width / (float)ClientSize.Height, .1f, 100); gl.MatrixMode(gl.GL_MODELVIEW); gl.LoadIdentity(); float[] triangle = new float[] { 0.0f, 1.0f, 0.0f, -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f }; float[] colors = new float[] { 1.0f, 0.0f, 0.0f, 9, 0.0f, 1.0f, 0.0f, 0, 0.0f, 0.0f, 1.0f, 0 }; gl.LoadIdentity(); gl.Translatef(0.0f, 0.0f, -6.0f); gl.Rotatef(myRotation, 0.0f, 1.0f, 0.0f); fixed(float *trianglePointer = &triangle[0], colorPointer = &colors[0]) { gl.EnableClientState(gl.GL_VERTEX_ARRAY); gl.VertexPointer(3, gl.GL_FLOAT, 0, (IntPtr)trianglePointer); gl.EnableClientState(gl.GL_COLOR_ARRAY); gl.ColorPointer(4, gl.GL_FLOAT, 0, (IntPtr)colorPointer); gl.DrawArrays(gl.GL_TRIANGLES, 0, 3); gl.DisableClientState(gl.GL_VERTEX_ARRAY); gl.DisableClientState(gl.GL_COLOR_ARRAY); gl.Flush(); } myRotation += 2f; gl.MatrixMode(gl.GL_PROJECTION); gl.LoadIdentity(); gl.Orthof(0, ClientSize.Width, ClientSize.Height, 0, -10, 10); gl.MatrixMode(gl.GL_MODELVIEW); gl.LoadIdentity(); myLeftAligned.Draw(); gl.Translatef(0, 80, 0); myCentered.Draw(); GlyphRun fpsText = new GlyphRun(myFont, Math.Round(myFps, 2).ToString() + " FPS"); fpsText.Draw(); gl.Translatef(0, 80, 0); myJustified.Draw(); }