示例#1
0
        public void SetResourceUsage(GpuResourceUsage resourceUsage, int register, GpuShaderType target = GpuShaderType.All)
        {
            //set resource Direct3D instance to pipeline's shader
            //we use target shader to flag which shader the resource will set to

            //we can use "&" to make sure if we need set buffer to vertex shader
            if ((target & GpuShaderType.VertexShader) != GpuShaderType.None)
            {
                ImmediateContext.VertexShader.SetShaderResource(register, resourceUsage.ShaderResource);
            }

            //we can use "&" to make sure if we need set buffer to pixel shader
            if ((target & GpuShaderType.PixelShader) != GpuShaderType.None)
            {
                ImmediateContext.PixelShader.SetShaderResource(register, resourceUsage.ShaderResource);
            }
        }
示例#2
0
        public void SetSamplerState(GpuSamplerState samplerState, int register, GpuShaderType target = GpuShaderType.All)
        {
            //set sampler state Direct3D instance to pipeline's shader
            //we use target shader to flag which shader the resource will set to

            //we can use "&" to make sure if we need set sampler state to vertex shader
            if ((target & GpuShaderType.VertexShader) != GpuShaderType.None)
            {
                ImmediateContext.VertexShader.SetSampler(register, samplerState.SamplerState);
            }

            //we can use "&" to make sure if we need set sampler state to pixel shader
            if ((target & GpuShaderType.PixelShader) != GpuShaderType.None)
            {
                ImmediateContext.PixelShader.SetSampler(register, samplerState.SamplerState);
            }
        }
示例#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);
            }
        }