我想知道是否可以获得 Texture2D 和 SamplerState 的变量名称。我知道我能够通过效果框架获得这些。但我正在寻找一种没有这个框架的方法。就像使用 Constantbuffers (ShaderReflection) 的方式一样。我想像这样制作 HLSL 代码
Texture2D tex0;
Texture2D bg;
有谁知道我如何能够在没有 EffectsFramework 的情况下访问 VariableNames?
我想知道是否可以获得 Texture2D 和 SamplerState 的变量名称。我知道我能够通过效果框架获得这些。但我正在寻找一种没有这个框架的方法。就像使用 Constantbuffers (ShaderReflection) 的方式一样。我想像这样制作 HLSL 代码
Texture2D tex0;
Texture2D bg;
有谁知道我如何能够在没有 EffectsFramework 的情况下访问 VariableNames?
好吧,这里很简单,首先编译你的着色器来获取字节码。
然后创建一个 ShaderReflection 的实例
byte[] yourbytecode;
SharpDX.D3DCompiler.ShaderReflection sr;
sr = new ShaderReflection(yourbytecode);
要查找绑定了多少资源:
int ResourceCount = sr.Description.BoundResources;
然后获取有关它的详细信息:
InputBindingDescription desc = sr.GetResourceBindingDescription(index);
它包含名称、维度和其他有用的数据。