Пример #1
0
        public void SetIndexBuffer(GpuBuffer buffer)
        {
            //set index buffer to input stage

            //test if the buffer can be set
            Debug.Assert(GpuConvert.HasBindUsage(buffer.ResourceInfo.BindUsage, GpuBindUsage.IndexBuffer) == true);

            //set index buffer
            ImmediateContext.InputAssembler.SetIndexBuffer(buffer.Resource as SharpDX.Direct3D11.Buffer,
                                                           SharpDX.DXGI.Format.R32_UInt, 0);
        }
Пример #2
0
        public void SetVertexBuffer(GpuBuffer buffer)
        {
            //set vertex buffer to input stage

            //test if the buffer can be set
            Debug.Assert(GpuConvert.HasBindUsage(buffer.ResourceInfo.BindUsage, GpuBindUsage.VertexBufferr) == true);

            //create buffer binding
            var bufferBinding = new SharpDX.Direct3D11.VertexBufferBinding(
                buffer.Resource as SharpDX.Direct3D11.Buffer,
                buffer.ElementSize, 0);

            //set vertex buffer
            ImmediateContext.InputAssembler.SetVertexBuffers(0, bufferBinding);
        }
Пример #3
0
        public void SetBuffer(GpuBuffer buffer, int register, GpuShaderType target = GpuShaderType.All)
        {
            //set buffer Direct3D instance to pipeline's shader
            //we use target shader to flag which shader the buffer will set to

            //test if the buffer can be set
            Debug.Assert(GpuConvert.HasBindUsage(buffer.ResourceInfo.BindUsage, GpuBindUsage.ConstantBuffer) == true);

            //we can use "&" to make sure if we need set buffer to vertex shader
            if ((target & GpuShaderType.VertexShader) != GpuShaderType.None)
            {
                ImmediateContext.VertexShader.SetConstantBuffer(register, buffer.Resource as SharpDX.Direct3D11.Buffer);
            }

            //we can use "&" to make sure if we need set buffer to pixel shader
            if ((target & GpuShaderType.PixelShader) != GpuShaderType.None)
            {
                ImmediateContext.PixelShader.SetConstantBuffer(register, buffer.Resource as SharpDX.Direct3D11.Buffer);
            }
        }