public void SetVertexBuffer(VertexBuffer buffer) { GL.GetError(); _vertexPointersNeedSetup = true; _vertexDeclaration = buffer.VertexElements; GlVertexBuffer glVertices = (GlVertexBuffer)buffer; glVertices.Bind(); GlException.ThrowExceptionIfErrorExists(); _currentVertexBuffer = glVertices; }
public VertexBuffer CreateVertexBuffer <T>(VertexBufferUsage usage, T[] data, int numVertices, VertexElementSet declaration) where T : struct { return(Direct3D9VertexBuffer.CreateBuffer(usage, _device, data, numVertices, declaration)); }
internal static Direct3D9VertexBuffer CreateBuffer <T>(VertexBufferUsage usage, SharpDX.Direct3D9.Device device, T[] data, int numVertices, VertexElementSet vertexElements) where T : struct { Direct3D9VertexBuffer buffer = new Direct3D9VertexBuffer(); buffer._declaration = vertexElements; buffer._numVertices = numVertices; buffer._buffer = new SharpDX.Direct3D9.VertexBuffer(device, numVertices * vertexElements.Stride, SharpDX.Direct3D9.Usage.WriteOnly, VertexFormat.None, Pool.Managed); buffer._usage = usage; if (data != null) { SharpDX.DataStream ds = buffer._buffer.Lock(0, numVertices * vertexElements.Stride, LockFlags.None); for (int i = 0; i < data.Length; i++) { ds.Write(data[i]); } buffer._buffer.Unlock(); } return(buffer); }
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); }