2

常量缓冲区的 D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT 限制是否意味着它必须是最大 D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT 字节大小,或者它真的是多个元素?即最大字节大小将是 D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT * 元素大小(16 字节)?

4

1 回答 1

2

它是可以在单个常量缓冲区中寻址的四个分量浮点向量数量的最大大小。它不是可以存储的任意数据元素的数量,因为这取决于元素占用的向量分量的数量。在回答您的问题时,是的,D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT*(4*sizeof(float))是可用于任何一个常量缓冲区的最大字节数。为什么你需要这些信息还不是很清楚,但不管怎样。

笔记:

这是 DirectX 10 和 11 中的情况,但不是 11.1。在 DirectX 11.1 中,可以创建大于限制 (64K) 的常量缓冲区,但不能一次全部更新。它们必须以 64K 的块为单位更新,对前 4096 个元素使用 *SetConstantBuffers 或对最多 4096 个元素的任何集合使用 *SetConstantBuffers1。

于 2013-08-15T19:16:38.523 回答