示例#1
0
        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 );
            }
        }
示例#2
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);
                }
            }
        }