我正在学习DirectX 11并已达到基本的HLSL部分。我想在顶点着色器中使用多个常量缓冲区,因此我需要为StartSlot
找到正确的VSSetConstantBuffers
。我在Google上搜索过,发现有人建议使用GetResourceBindingDescByName
。
我尝试了GetResourceBindingDescByName
,但发现它只能为第一个cbuffer获取正确的StartSlot
。例如,在我的顶点着色器中:
cbuffer Test1
{
float4 a;
};
cbuffer Test2
{
float4 b;
};
现在GetResourceBindingDescByName("Test1", &bind_desc)
正常运行,但GetResourceBindingDescByName("Test2", &bind_desc)
将失败(返回E_INVAILDARG
)。
有人可以帮助我吗?
答案 0 :(得分:0)
反射仅包含着色器使用的符号。正如评论中所证实的那样,b没有被使用,并且一旦在代码中引用了b而没有被优化剥离,问题就解决了。