c# - SharpDx获取Texture2D、SamplerState的Shader变量名称

标签 c# directx-11 texture2d sharpdx multitexturing

我想知道是否可以获取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/

相关文章:

opengl-es - Texture2D 与安卓手机上的计算着色器不兼容?

c# - 在 XNA 中缩放 Texture2D

c# - 匹配次数最多的子序列?

c# - book TryGet(out X x) 模式的替代方案

directx-11 - 创建交换链时如何解决此多重采样错误?

c++ - DirectX11 ReportLiveObjects 实例化

c++ - GPU 计算 (CUDA) tex2d/tex3d - 如何处理各向异性像素/体素

c# - Linq 查询以获取子列表中的共享项

c# - 使用 Resharper 7.1 插件从 IClass 中删除 IProperty

unity3d - 在 UWP 的 Unity 插件中使用 DirectX11 的硬件加速 H264 解码