public void SetVertexBuffer(VertexBuffer buffer) { Direct3D9VertexBuffer vertexBuffer = (Direct3D9VertexBuffer)buffer; _device.SetStreamSource(0, vertexBuffer.InternalBuffer, 0, vertexBuffer.VertexElements.Stride); _device.VertexDeclaration = vertexBuffer.VertexElements.D3D9Declaration; _currentVertexBuffer = vertexBuffer; }
public void RenderBuffers(VertexBuffer vertices, IndexBuffer indices) { Direct3D9VertexBuffer vertexBuffer = (Direct3D9VertexBuffer)vertices; Direct3D9IndexBuffer indexBuffer = (Direct3D9IndexBuffer)indices; _device.SetStreamSource(0, vertexBuffer.InternalBuffer, 0, vertices.VertexElements.Stride); if (indexBuffer != null) { _device.Indices = indexBuffer.InternalBuffer; _device.DrawIndexedPrimitive(SharpDX.Direct3D9.PrimitiveType.TriangleList, 0, 0, vertexBuffer.NumVertices / 3, 0, indices.Length / 3); } else { _device.DrawPrimitives(SharpDX.Direct3D9.PrimitiveType.TriangleList, 0, vertexBuffer.NumVertices / 3); } }
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); }
public VertexBuffer CreateVertexBuffer <T>(VertexBufferUsage usage, T[] data, int numVertices, VertexElementSet declaration) where T : struct { return(Direct3D9VertexBuffer.CreateBuffer(usage, _device, data, numVertices, declaration)); }