DirectX 索引缓冲区 -> 索引缓冲区开始

DirectX Index Buffer -> Start of Index Buffer

我目前正在处理 Direct11 图形 API,我想知道为什么索引缓冲区有这个公式?

索引缓冲区开始 = 索引缓冲区基地址 + 偏移量(字节)+ StartIndexLocation * ElementSize(字节);

我想知道这是什么意思。有人请帮我解决这个问题

完整参考文档 -> https://docs.microsoft.com/en-us/windows/win32/direct3d11/overviews-direct3d-11-resources-buffers-intro

您要获取的索引取决于以下数据。

  1. 索引缓冲区的内容。

  2. Offset 你已经传给了 IASetIndexBuffer。该值以字节为单位。

  3. StartIndexLocation表示你在提交draw call时已经通过了,比如DrawIndexed。那个是元素,而不是字节。 Direct3D 11 仅支持 uint16_tuint32_t 索引格式,这意味着公式中的元素大小为 2 或 4 个字节,具体取决于您在 [=11= 的 Format 参数中传递的内容].

在您调用DrawIndexed之后,当GPU 执行您要求的操作时,它会将这些数据组合起来,从索引缓冲区中获取连续范围的图元。该公式指定该范围的起始位置。