diff --git a/RenderSystems/ANX.Framework.Windows.DX10/GraphicsDeviceWindowsDX10.cs b/RenderSystems/ANX.Framework.Windows.DX10/GraphicsDeviceWindowsDX10.cs index cd3942cc..1f022fe9 100644 --- a/RenderSystems/ANX.Framework.Windows.DX10/GraphicsDeviceWindowsDX10.cs +++ b/RenderSystems/ANX.Framework.Windows.DX10/GraphicsDeviceWindowsDX10.cs @@ -326,7 +326,19 @@ namespace ANX.Framework.Windows.DX10 #region DrawUserIndexedPrimitives public void DrawUserIndexedPrimitives(PrimitiveType primitiveType, T[] vertexData, int vertexOffset, int numVertices, Array indexData, int indexOffset, int primitiveCount, VertexDeclaration vertexDeclaration, IndexElementSize indexFormat) where T : struct, IVertexType { - throw new NotImplementedException(); + int vertexCount = vertexData.Length; + int indexCount = indexData.Length; + VertexBuffer_DX10 vb10 = new VertexBuffer_DX10(this.device, vertexDeclaration, vertexCount, BufferUsage.None); + vb10.SetData(null, vertexData); + + SharpDX.Direct3D10.VertexBufferBinding nativeVertexBufferBindings = new SharpDX.Direct3D10.VertexBufferBinding(vb10.NativeBuffer, vertexDeclaration.VertexStride, 0); + + device.InputAssembler.SetVertexBuffers(0, nativeVertexBufferBindings); + + IndexBuffer_DX10 idx10 = new IndexBuffer_DX10(this.device, indexFormat, indexCount, BufferUsage.None); + idx10.SetData(null, (int[])indexData); + + DrawIndexedPrimitives(primitiveType, 0, vertexOffset, numVertices, indexOffset, primitiveCount); } #endregion // DrawUserIndexedPrimitives diff --git a/RenderSystems/ANX.Framework.Windows.DX10/IndexBuffer_DX10.cs b/RenderSystems/ANX.Framework.Windows.DX10/IndexBuffer_DX10.cs index 36674c43..cacc49f5 100644 --- a/RenderSystems/ANX.Framework.Windows.DX10/IndexBuffer_DX10.cs +++ b/RenderSystems/ANX.Framework.Windows.DX10/IndexBuffer_DX10.cs @@ -73,20 +73,29 @@ namespace ANX.Framework.Windows.DX10 GraphicsDeviceWindowsDX10 gd10 = graphics.NativeDevice as GraphicsDeviceWindowsDX10; SharpDX.Direct3D10.Device device = gd10 != null ? gd10.NativeDevice as SharpDX.Direct3D10.Device : null; - if (device != null) - { - BufferDescription description = new BufferDescription() - { - Usage = ResourceUsage.Dynamic, - SizeInBytes = (size == IndexElementSize.SixteenBits ? 2 : 4) * indexCount, - BindFlags = BindFlags.IndexBuffer, - CpuAccessFlags = CpuAccessFlags.Write, - OptionFlags = ResourceOptionFlags.None - }; + InitializeBuffer(device, size, indexCount, usage); + } - this.buffer = new SharpDX.Direct3D10.Buffer(device, description); - this.buffer.Unmap(); - } + internal IndexBuffer_DX10(SharpDX.Direct3D10.Device device, IndexElementSize size, int indexCount, BufferUsage usage) + { + this.size = size; + + InitializeBuffer(device, size, indexCount, usage); + } + + private void InitializeBuffer(SharpDX.Direct3D10.Device device, IndexElementSize size, int indexCount, BufferUsage usage) + { + BufferDescription description = new BufferDescription() + { + Usage = ResourceUsage.Dynamic, + SizeInBytes = (size == IndexElementSize.SixteenBits ? 2 : 4) * indexCount, + BindFlags = BindFlags.IndexBuffer, + CpuAccessFlags = CpuAccessFlags.Write, + OptionFlags = ResourceOptionFlags.None + }; + + this.buffer = new SharpDX.Direct3D10.Buffer(device, description); + this.buffer.Unmap(); } public void SetData(GraphicsDevice graphicsDevice, T[] data) where T : struct diff --git a/RenderSystems/ANX.Framework.Windows.DX10/Properties/AssemblyInfo.cs b/RenderSystems/ANX.Framework.Windows.DX10/Properties/AssemblyInfo.cs index fd8bfe69..631972ac 100644 --- a/RenderSystems/ANX.Framework.Windows.DX10/Properties/AssemblyInfo.cs +++ b/RenderSystems/ANX.Framework.Windows.DX10/Properties/AssemblyInfo.cs @@ -32,7 +32,7 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.7.12.0")] -[assembly: AssemblyFileVersion("0.7.12.0")] +[assembly: AssemblyVersion("0.7.13.0")] +[assembly: AssemblyFileVersion("0.7.13.0")] [assembly: InternalsVisibleTo("ANX.Framework.ContentPipeline")] diff --git a/RenderSystems/ANX.RenderSystem.Windows.DX11/GraphicsDeviceWindowsDX11.cs b/RenderSystems/ANX.RenderSystem.Windows.DX11/GraphicsDeviceWindowsDX11.cs index b0a4a3cd..255bc082 100644 --- a/RenderSystems/ANX.RenderSystem.Windows.DX11/GraphicsDeviceWindowsDX11.cs +++ b/RenderSystems/ANX.RenderSystem.Windows.DX11/GraphicsDeviceWindowsDX11.cs @@ -330,7 +330,19 @@ namespace ANX.RenderSystem.Windows.DX11 #region DrawUserIndexedPrimitives public void DrawUserIndexedPrimitives(PrimitiveType primitiveType, T[] vertexData, int vertexOffset, int numVertices, Array indexData, int indexOffset, int primitiveCount, VertexDeclaration vertexDeclaration, IndexElementSize indexFormat) where T : struct, IVertexType { - throw new NotImplementedException(); + int vertexCount = vertexData.Length; + int indexCount = indexData.Length; + VertexBuffer_DX11 vb11 = new VertexBuffer_DX11(this.deviceContext.Device, vertexDeclaration, vertexCount, BufferUsage.None); + vb11.SetData(null, vertexData); + + SharpDX.Direct3D11.VertexBufferBinding nativeVertexBufferBindings = new SharpDX.Direct3D11.VertexBufferBinding(vb11.NativeBuffer, vertexDeclaration.VertexStride, 0); + + deviceContext.InputAssembler.SetVertexBuffers(0, nativeVertexBufferBindings); + + IndexBuffer_DX11 idx10 = new IndexBuffer_DX11(this.deviceContext.Device, indexFormat, indexCount, BufferUsage.None); + idx10.SetData(null, (int[])indexData); + + DrawIndexedPrimitives(primitiveType, 0, vertexOffset, numVertices, indexOffset, primitiveCount); } #endregion // DrawUserIndexedPrimitives diff --git a/RenderSystems/ANX.RenderSystem.Windows.DX11/IndexBuffer_DX11.cs b/RenderSystems/ANX.RenderSystem.Windows.DX11/IndexBuffer_DX11.cs index 0900b042..5aae2e25 100644 --- a/RenderSystems/ANX.RenderSystem.Windows.DX11/IndexBuffer_DX11.cs +++ b/RenderSystems/ANX.RenderSystem.Windows.DX11/IndexBuffer_DX11.cs @@ -73,20 +73,28 @@ namespace ANX.RenderSystem.Windows.DX11 GraphicsDeviceWindowsDX11 gd11 = graphics.NativeDevice as GraphicsDeviceWindowsDX11; SharpDX.Direct3D11.DeviceContext context = gd11 != null ? gd11.NativeDevice as SharpDX.Direct3D11.DeviceContext : null; - if (context != null) - { - BufferDescription description = new BufferDescription() - { - Usage = ResourceUsage.Dynamic, - SizeInBytes = (size == IndexElementSize.SixteenBits ? 2 : 4) * indexCount, - BindFlags = BindFlags.IndexBuffer, - CpuAccessFlags = CpuAccessFlags.Write, - OptionFlags = ResourceOptionFlags.None - }; + InitializeBuffer(context.Device, size, indexCount, usage); + } - this.buffer = new SharpDX.Direct3D11.Buffer(context.Device, description); - //this.buffer.Unmap(); - } + internal IndexBuffer_DX11(SharpDX.Direct3D11.Device device, IndexElementSize size, int indexCount, BufferUsage usage) + { + this.size = size; + + InitializeBuffer(device, size, indexCount, usage); + } + + private void InitializeBuffer(SharpDX.Direct3D11.Device device, IndexElementSize size, int indexCount, BufferUsage usage) + { + BufferDescription description = new BufferDescription() + { + Usage = ResourceUsage.Dynamic, + SizeInBytes = (size == IndexElementSize.SixteenBits ? 2 : 4) * indexCount, + BindFlags = BindFlags.IndexBuffer, + CpuAccessFlags = CpuAccessFlags.Write, + OptionFlags = ResourceOptionFlags.None + }; + + this.buffer = new SharpDX.Direct3D11.Buffer(device, description); } public void SetData(GraphicsDevice graphicsDevice, T[] data) where T : struct diff --git a/RenderSystems/ANX.RenderSystem.Windows.DX11/Properties/AssemblyInfo.cs b/RenderSystems/ANX.RenderSystem.Windows.DX11/Properties/AssemblyInfo.cs index f0da97a5..9d918e64 100644 --- a/RenderSystems/ANX.RenderSystem.Windows.DX11/Properties/AssemblyInfo.cs +++ b/RenderSystems/ANX.RenderSystem.Windows.DX11/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Buildnummer // Revision // -[assembly: AssemblyVersion("0.7.4.0")] -[assembly: AssemblyFileVersion("0.7.4.0")] +[assembly: AssemblyVersion("0.7.5.0")] +[assembly: AssemblyFileVersion("0.7.5.0")]