private void SimpleOpenGlControl_OnInitScene(object sender, SimpleOpenGlEventArgs args)
        {
            var gl = args.OpenGl;

            var vertices = new[]
            {
                new Vertex
                {
                    Position = new Vector3 {
                        X = -1, Y = -1, Z = 0
                    },
                    Color = new Color3 {
                        R = 1, G = 0, B = 0
                    }
                },
                new Vertex
                {
                    Position = new Vector3 {
                        X = -1, Y = 1, Z = 0
                    },
                    Color = new Color3 {
                        R = 0, G = 1, B = 0
                    }
                },
                new Vertex
                {
                    Position = new Vector3 {
                        X = 1, Y = 1, Z = 0
                    },
                    Color = new Color3 {
                        R = 0, G = 0, B = 1
                    }
                },
                new Vertex
                {
                    Position = new Vector3 {
                        X = 1, Y = -1, Z = 0
                    },
                    Color = new Color3 {
                        R = 1, G = 1, B = 0
                    }
                }
            };

            var buf = MakeRaw(vertices);

            var bufs = new uint[1];

            gl.GenBuffers(1, bufs);

            _bufferId = bufs[0];
            gl.BindBuffer(OpenGL.GL_ARRAY_BUFFER, _bufferId);
            gl.BufferData(OpenGL.GL_ARRAY_BUFFER, vertices.Length * Marshal.SizeOf <Vertex>(), buf, OpenGL.GL_STATIC_DRAW);
            gl.VertexPointer(3, OpenGL.GL_FLOAT, Marshal.SizeOf <Vertex>(), IntPtr.Zero);
            gl.ColorPointer(3, OpenGL.GL_FLOAT, Marshal.SizeOf <Vertex>(), IntPtr.Zero + Marshal.SizeOf <Vector3>());
            gl.BindBuffer(OpenGL.GL_ARRAY_BUFFER, 0);

            Marshal.FreeHGlobal(buf);
        }
        private void SimpleOpenGlControl_OnRenderScene(object sender, SimpleOpenGlEventArgs args)
        {
            var gl = args.OpenGl;

            gl.LookAt(0, 0, -5, 0, 0, 0, 0, 1, 0);

            gl.BindBuffer(OpenGL.GL_ARRAY_BUFFER, _bufferId);
            gl.EnableClientState(OpenGL.GL_VERTEX_ARRAY);
            gl.DrawArrays(OpenGL.GL_QUADS, 0, 4);
            gl.DisableClientState(OpenGL.GL_VERTEX_ARRAY);
        }
예제 #3
0
        private void SimpleOpenGlControl_OnRenderScene(object sender, SimpleOpenGlEventArgs args)
        {
            var gl = args.OpenGl;

            gl.LookAt(0, 0, -5, 0, 0, 0, 0, 1, 0);

            gl.Begin(OpenGL.GL_QUADS);

            gl.Color(1.0f, 0.0f, 0.0f);
            gl.Vertex(-1.0f, -1.0f, 0.0f);
            gl.Color(1.0f, 1.0f, 0.0f);
            gl.Vertex(-1.0f, 1.0f, 0.0f);
            gl.Color(1.0f, 0.0f, 1.0f);
            gl.Vertex(1.0f, 1.0f, 0.0f);
            gl.Color(0.0f, 1.0f, 1.0f);
            gl.Vertex(1.0f, -1.0f, 0.0f);

            gl.End();
        }
        private void SimpleOpenGlControl_OnInitScene(object sender, SimpleOpenGlEventArgs args)
        {
            var gl = args.OpenGl;

            var vertexData = new[]
            {
                -1.0f, -1.0f, 0.0f,
                -1.0f, 1.0f, 0.0f,
                1.0f, 1.0f, 0.0f,
                1.0f, -1.0f, 0.0f
            };

            var bufs = new uint[1];

            gl.GenBuffers(1, bufs);

            _bufferId = bufs[0];
            gl.BindBuffer(OpenGL.GL_ARRAY_BUFFER, _bufferId);
            gl.BufferData(OpenGL.GL_ARRAY_BUFFER, vertexData, OpenGL.GL_STATIC_DRAW);
            gl.VertexPointer(3, OpenGL.GL_FLOAT, 0, IntPtr.Zero);
        }