【发布时间】:2016-06-21 09:40:37
【问题描述】:
我正在学习 DirectX 11 并已达到基本的 HLSL 部分。我想在顶点着色器中使用多个常量缓冲区,所以我需要为VSSetConstantBuffers 找到正确的StartSlot。我在谷歌上搜索,发现有人建议使用GetResourceBindingDescByName。
我试过GetResourceBindingDescByName,但发现它只能为第一个cbuffer得到正确的StartSlot。例如,在我的顶点着色器中:
cbuffer Test1
{
float4 a;
};
cbuffer Test2
{
float4 b;
};
现在GetResourceBindingDescByName("Test1", &bind_desc) 可以正常工作,但GetResourceBindingDescByName("Test2", &bind_desc) 将失败(返回E_INVAILDARG)。
谁能帮帮我?
【问题讨论】:
-
你的着色器中是否使用了 b?它可能已被优化条带化。
-
谢谢。我只是在我的着色器中使用 a 。我在着色器代码中添加了对 b 的引用,问题就解决了。您能回答这个问题,以便我将其标记为该问题的答案吗?
标签: directx shader directx-11 hlsl