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); }
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); }
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); } }