private void DrawPositionColorLineListBufferNoMaterial(Device device, VertexBufferNoMaterial deviceBuffers, Matrix worldViewProj) { int layoutNumber = 1; device.InputAssembler.InputLayout = _renderLayouts[layoutNumber].VertexLayout; device.InputAssembler.PrimitiveTopology = SharpDX.Direct3D.PrimitiveTopology.LineList; device.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(deviceBuffers.VertexBuffer, (8 * 4), 0)); _renderLayouts[layoutNumber].Pass.Apply(); device.Draw(deviceBuffers.VertexCount, 0); }
private void DrawPositionColorLineListBufferNoMaterial(Device device, VertexBufferNoMaterial deviceBuffers, Matrix worldViewProj) { int layoutNumber = 1; device.InputAssembler.InputLayout = _renderLayouts[layoutNumber].VertexLayout; device.InputAssembler.PrimitiveTopology = SharpDX.Direct3D.PrimitiveTopology.LineList; device.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(deviceBuffers.VertexBuffer, (8 * 4), 0)); _renderLayouts[layoutNumber].pass.Apply(); device.Draw(deviceBuffers.VertexCount, 0); }
private void BringOverlayGeometryIntoDeviceBuffers(D3D10OverlayContext overlayGeometry) { Device device = _hostDevice; if (device == null) return; // ------------------ Triangle buffer ------------------------------------ { var buf = (PositionColorIndexedTriangleBuffer)overlayGeometry.PositionColorIndexedTriangleBuffers; var vertexBuffer = Buffer.Create<float>(device, buf.VertexStream, new BufferDescription() { BindFlags = BindFlags.VertexBuffer, CpuAccessFlags = CpuAccessFlags.None, OptionFlags = ResourceOptionFlags.None, SizeInBytes = buf.VertexStreamLength, Usage = ResourceUsage.Default }); var indexBuffer = Buffer.Create<int>(device, buf.IndexStream, new BufferDescription() { BindFlags = BindFlags.IndexBuffer, CpuAccessFlags = CpuAccessFlags.None, OptionFlags = ResourceOptionFlags.None, SizeInBytes = buf.IndexStreamLength, Usage = ResourceUsage.Default }); var indexCount = buf.TriangleCount * 3; var devBuffer = new VertexAndIndexDeviceBufferNoMaterial { VertexBuffer = vertexBuffer, VertexCount = buf.VertexCount, IndexBuffer = indexBuffer, IndexCount = indexCount }; var oldBuffer = System.Threading.Interlocked.Exchange(ref _overlayGeometryTriangleDeviceBuffer, devBuffer); oldBuffer?.RemoveAndDispose(); } // ------------------ Line list buffer ------------------------------------ { var buf = (PositionColorLineListBuffer)overlayGeometry.PositionColorLineListBuffer; var vertexBuffer = Buffer.Create<float>(device, buf.VertexStream, new BufferDescription() { BindFlags = BindFlags.VertexBuffer, CpuAccessFlags = CpuAccessFlags.None, OptionFlags = ResourceOptionFlags.None, SizeInBytes = buf.VertexStreamLength, Usage = ResourceUsage.Default }); var devBuffer = new VertexBufferNoMaterial { VertexBuffer = vertexBuffer, VertexCount = buf.VertexCount }; var oldBuffer = System.Threading.Interlocked.Exchange(ref _overlayGeometryLineListBuffer, devBuffer); oldBuffer?.RemoveAndDispose(); } }