public static OpenGLVertex ToOpenGLVertex(this Vertex vertex) { var v = new OpenGLVertex(); v.Position = vertex.Position.ToVector3(); if (vertex.Normal != null) v.Normal = vertex.Normal.ToVector3(); v.Colour = vertex.Color.ToVector4(); if (vertex.TexCoord != null) v.TexCoord = vertex.TexCoord.ToVector2(); return v; }
private void Buffer(OpenGLVertex[] data) { using (new Bind(this)) { Count = data.Count(); GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(data.Length * BlittableValueType.StrideOf(data)), data, BufferUsageHint.StaticDraw); int size; GL.GetBufferParameter(BufferTarget.ArrayBuffer, BufferParameterName.BufferSize, out size); if (data.Length * BlittableValueType.StrideOf(data) != size) throw new ApplicationException("Vertex data not uploaded correctly"); } }