Example #1
0
        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;
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
 public VertexBuffer CreateVertexBuffer <T>(VertexBufferUsage usage, T[] data, int numVertices, VertexElementSet declaration) where T : struct
 {
     return(Direct3D9VertexBuffer.CreateBuffer(usage, _device, data, numVertices, declaration));
 }