HLSL ID3D11DeviceContext :: UpdateSubresource错误

时间:2012-12-25 11:41:32

标签: c++ directx buffer constants hlsl

确定,

所以我有一个着色器需要两个常量缓冲区,但是当我使用

ID3D11DeviceContext::UpdateSubresource

我将SubResource设置为1(第二个缓冲区),然后我被警告(错误...):

D3D11: ERROR: ID3D11DeviceContext::UpdateSubresource: DstSubresource index (1) out of range, must be less than 1. [ RESOURCE_MANIPULATION ERROR #287: UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE ]

我理解错误,但不是为什么会出现,也就是为什么会出现?

谢谢

1 个答案:

答案 0 :(得分:0)

SubResource是为TextureArrays / Mipmaps设计的,因此您可以读取/写入特定的mip切片。在缓冲区的情况下,SubResource始终为零(因为它只是或多或少的原始数据)。

您可以找到有关SubResources here

的一些信息

因此你可以使用0来更新每个常量缓冲区,然后你需要使用PSSetConstantBuffers(以及需要它的每个阶段)将每个常量缓冲区分配给着色器插槽,然后相应地选择开始时间(这应该是匹配着色器中的寄存器编号。)