public void SaveTXT( string filename ) { var device = D3D10Wrapper.Instance.Device; // copy to CPU var ctd = Texture.Description; ctd.Usage = ResourceUsage.Staging; ctd.BindFlags = BindFlags.None; ctd.CpuAccessFlags = CpuAccessFlags.Read | CpuAccessFlags.Write; using( var cpuTexture = new Texture1D( device, ctd ) ) { device.CopyResource( Texture, cpuTexture ); var stream = cpuTexture.Map( 0, MapMode.Read, MapFlags.None ); using( var sw = new StreamWriter( filename ) ) for( int i = 0; i < Length; ++i ) { var x = stream.Read< float >(); var y = stream.Read< float >(); var z = stream.Read< float >(); var w = stream.Read< float >(); sw.WriteLine( "{0}: {1}, {2}, {3}, {4}", i, x, y, z, w ); } stream.Close(); cpuTexture.Unmap( 0 ); } }
private void DrawPositionNormalUIndexedTriangleBuffer(Device device, VertexAndIndexDeviceBuffer deviceBuffers, Matrix worldViewProj) { int layoutNumber = 6; device.InputAssembler.InputLayout = _renderLayouts[layoutNumber].VertexLayout; device.InputAssembler.PrimitiveTopology = SharpDX.Direct3D.PrimitiveTopology.TriangleList; // set clip planes if (null != deviceBuffers.ClipPlanes) { for (int i = 0; i < Math.Min(6, deviceBuffers.ClipPlanes.Length); ++i) { _evClipPlanes[i].Set(deviceBuffers.ClipPlanes[i]); } } // set UColor texture var stream = _textureFor1DColorProvider.Map(0, MapMode.WriteDiscard, SharpDX.Direct3D10.MapFlags.None); //stream.Seek(0, System.IO.SeekOrigin.Begin); stream.Write(deviceBuffers.UColors, 0, deviceBuffers.UColors.Length); //stream.Close(); _textureFor1DColorProvider.Unmap(0); SetShaderMaterialVariables(deviceBuffers.Material); // note: the material's color must be set to the ColorProviders InvalidColor! // draw now device.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(deviceBuffers.VertexBuffer, 32, 0)); device.InputAssembler.SetIndexBuffer(deviceBuffers.IndexBuffer, Format.R32_UInt, 0); _renderLayouts[layoutNumber].Pass.Apply(); device.DrawIndexed(deviceBuffers.IndexCount, 0, 0); // clear clip planes afterwards if (null != deviceBuffers.ClipPlanes) { var emptyPlane = new Plane(); for (int i = 0; i < Math.Min(6, deviceBuffers.ClipPlanes.Length); ++i) { _evClipPlanes[i].Set(emptyPlane); } } }