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