2013-06-19 29 views
2

我想知道是否可以获取Texture2D和SamplerState的变量名称。 我知道我可以通过效果框架获得这些效果。 但我正在寻找一种没有这个框架的方式。像Constantbuffers(ShaderReflection)一样。 我要让这样SharpDx获取着色器变量Texture2D的名称,SamplerState

Texture2D tex0; 
    Texture2D bg; 

的HLSL代码有没有人有一个想法,我怎么可能能够访问VariableNames没有EffectsFramework?

+0

我不知道答案,但我也很好奇。如果您在[SharpDX论坛](http://sharpdx.org/forum)上提问,您可能会收到回复。 – shoelzer

回答

2

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

然后创建ShaderReflection

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

的实例要找到多少资源绑定:

int ResourceCount = sr.Description.BoundResources; 

然后来获得关于它的详细信息:

InputBindingDescription desc = sr.GetResourceBindingDescription(index); 

它包含名称,尺寸和其他有用的数据。

+0

不错谢谢! – Rey