public static void Init() { if(vbo==null){ VertexPositionColor[] CubeVertices = new VertexPositionColor[] { new VertexPositionColor( 0.0f, 0.0f, 1.0f, Color.HotPink), new VertexPositionColor( 1.0f, 0.0f, 1.0f, Color.HotPink), new VertexPositionColor( 1.0f, 1.0f, 1.0f, Color.HotPink), new VertexPositionColor( 0.0f, 1.0f, 1.0f, Color.HotPink), new VertexPositionColor( 0.0f, 0.0f, 0.0f, Color.HotPink), new VertexPositionColor( 1.0f, 0.0f, 0.0f, Color.HotPink), new VertexPositionColor( 1.0f, 1.0f, 0.0f, Color.HotPink), new VertexPositionColor( 0.0f, 1.0f, 0.0f, Color.HotPink) }; short[] CubeElements = new short[] { 0, 1, 2, 2, 3, 0, // front face 3, 2, 6, 6, 7, 3, // top face 7, 6, 5, 5, 4, 7, // back face 4, 0, 3, 3, 7, 4, // left face 0, 1, 5, 5, 4, 0, // bottom face 1, 5, 6, 6, 2, 1, // right face }; vbo= new VertexBufferObject(CubeVertices, CubeElements); } }
public VertexBufferObject(VertexPositionColor[] verts, short[] elements) { //TODO error on misallovated buffers vertstride =BlittableValueType.StrideOf(verts); //bind our vertexes GL.GenBuffers(1,out this.VboId); GL.BindBuffer (BufferTarget.ArrayBuffer, this.VboId); GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(verts.Length * vertstride), verts, BufferUsageHint.StaticDraw); GL.GetBufferParameter(BufferTarget.ArrayBuffer, BufferParameterName.BufferSize, out vbobuffersize); //bind our indexes GL.GenBuffers(1, out this.EboId); GL.BindBuffer (BufferTarget.ElementArrayBuffer, this.EboId); GL.BufferData(BufferTarget.ElementArrayBuffer, (IntPtr)(elements.Length * BlittableValueType.StrideOf(elements)), elements, BufferUsageHint.StaticDraw); GL.GetBufferParameter(BufferTarget.ElementArrayBuffer,BufferParameterName.BufferSize, out ebobuffersize); this.ElementSize = elements.Length; }