Ejemplo n.º 1
0
        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();
        }