0

好的,

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

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 ]

我理解错误,但不知道为什么会出现,即为什么会发生?

谢谢你

4

1 回答 1

0

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

您可以在此处找到有关子资源的一些信息

因此,您可以使用 0 更新每个常量缓冲区,然后您需要使用 PSSetConstantBuffers 将每个常量缓冲区分配给着色器插槽(以及需要它的每个阶段),然后相应地选择起始位置(应该与寄存器匹配着色器中的数字)。

于 2013-01-19T20:09:11.267 回答