使用 Direct3D 11 和 SharpDX,给定在着色器中声明的纹理贴图的名称,我如何知道将我的 Sampler 和 TextureView 分配到哪个插槽?
文档表明我可以使用 ShaderReflection,但不清楚如何...
void SetTexture(MyShaderProgram shaderProgram, string name, MyTextureMap textureMap)
{
byte[] byteCode = shaderProgram.ByteCode;
var shaderReflection = new
SharpDX.D3DCompiler.ShaderReflection(byteCode);
var slot = ?
PixelShaderStage pixelShader = shaderProgram.PixelShader;
pixelShader.SetSampler(slot, textureMap.Sampler);
pixelShader.SetShaderResource(slot, textureMap.TextureView);
}