我想知道是否可以获取Texture2D和SamplerState的变量名称。 我知道我能够通过效果框架获得这些。 但我正在寻找一种没有这个框架的方法。就像 Constantbuffers (ShaderReflection) 的方式一样。 我想让 HLSL 代码像这样
Texture2D tex0;
Texture2D bg;
有人知道我如何在没有 EffectsFramework 的情况下访问变量名称吗?
最佳答案
好吧,这里很简单,首先编译着色器以获取字节码。
然后创建ShaderReflection的实例
byte[] yourbytecode;
SharpDX.D3DCompiler.ShaderReflection sr;
sr = new ShaderReflection(yourbytecode);
要查找绑定(bind)了多少资源:
int ResourceCount = sr.Description.BoundResources;
然后获取有关它的详细信息:
InputBindingDescription desc = sr.GetResourceBindingDescription(index);
它包含名称、尺寸和其他有用数据。
关于c# - SharpDx获取Texture2D、SamplerState的Shader变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17190507/