确定,
所以我有一个着色器需要两个常量缓冲区,但是当我使用
时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 ]
我理解错误,但不是为什么会出现,也就是为什么会出现?
谢谢
答案 0 :(得分:0)
SubResource是为TextureArrays / Mipmaps设计的,因此您可以读取/写入特定的mip切片。在缓冲区的情况下,SubResource始终为零(因为它只是或多或少的原始数据)。
您可以找到有关SubResources here
的一些信息因此你可以使用0来更新每个常量缓冲区,然后你需要使用PSSetConstantBuffers(以及需要它的每个阶段)将每个常量缓冲区分配给着色器插槽,然后相应地选择开始时间(这应该是匹配着色器中的寄存器编号。)