如何按名称获取纹理的插槽号?

时间:2013-11-20 01:34:27

标签: sharpdx direct3d11

使用Direct3D 11和SharpDX,给定着色器中声明的纹理贴图的名称,我如何知道将我的采样器和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);
}

1 个答案:

答案 0 :(得分:0)

着色器BindPoint的{​​{1}}似乎就是出于此目的。因此,这可能就足够了:

InputBindingDescription

值得注意的是,技术上似乎应该得到两个绑定点:一个用于样本,一个用于纹理视图。由于它们经常被并排宣布,因此这个解决方案可能就足够了。