public void SetVertexBuffer(VertexBuffer buffer) { GL.GetError(); _vertexPointersNeedSetup = true; _vertexDeclaration = buffer.VertexElements; GlVertexBuffer glVertices = (GlVertexBuffer)buffer; glVertices.Bind(); GlException.ThrowExceptionIfErrorExists(); _currentVertexBuffer = glVertices; }
internal static GlVertexBuffer CreateBuffer <T>(VertexBufferUsage usage, T[] data, int numVertices, VertexElementSet vertexElements) where T : struct { GlVertexBuffer buffer = new GlVertexBuffer(); buffer._declaration = vertexElements; buffer._numVertices = numVertices; buffer._usage = usage; GL.GenBuffers(1, out buffer._buffer); GL.BindBuffer(BufferTarget.ArrayBuffer, buffer._buffer); GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(numVertices * vertexElements.Stride), data, (BufferUsageHint)convertUsage(usage)); GL.BindBuffer(BufferTarget.ArrayBuffer, 0); return(buffer); }
public VertexBuffer CreateVertexBuffer <T>(VertexBufferUsage usage, T[] data, int numVertices, VertexElementSet declaration) where T : struct { return(GlVertexBuffer.CreateBuffer(usage, data, numVertices, declaration)); }