2

我想知道是否可以获得 Texture2D 和 SamplerState 的变量名称。我知道我能够通过效果框架获得这些。但我正在寻找一种没有这个框架的方法。就像使用 Constantbuffers (ShaderReflection) 的方式一样。我想像这样制作 HLSL 代码

   Texture2D tex0;
   Texture2D bg;

有谁知道我如何能够在没有 EffectsFramework 的情况下访问 VariableNames?

4

1 回答 1

2

好吧,这里很简单,首先编译你的着色器来获取字节码。

然后创建一个 ShaderReflection 的实例

byte[] yourbytecode;
SharpDX.D3DCompiler.ShaderReflection sr;
sr = new ShaderReflection(yourbytecode);

要查找绑定了多少资源:

int ResourceCount = sr.Description.BoundResources;

然后获取有关它的详细信息:

InputBindingDescription desc = sr.GetResourceBindingDescription(index);

它包含名称、维度和其他有用的数据。

于 2013-07-09T12:25:15.613 回答