Vulkan:vkCmdBindDescriptorSets、pDynamicOffsets
Vulkan: vkCmdBindDescriptorSets, pDynamicOffsets
引用 vulkan 规范第 'Descriptor Set Binding' 章:
The effective offset used for dynamic uniform and storage buffer bindings is the sum of the relative offset taken from pDynamicOffsets, and the base address of the buffer plus base offset in the descriptor set.
这似乎没有意义,偏移量不能是地址和其他偏移量的总和。声明真正想表达什么?是最终偏移量 A) pDynamicOffsets 中的偏移量的 sum 和描述符集中的偏移量还是 B) 等于 中的偏移量pDynamicOffsets?
an offset can't be the sum of an address and other offsets
为什么不呢?
当您将 VkBuffer
绑定到一块内存时,您会在该分配范围内提供一个字节偏移量,以指向您希望缓冲区在该内存中存在的位置。该偏移量有时被称为缓冲区的 "base address"(类似的东西用于图像)。
它的意思是,通过描述符可访问的内存范围的开始由 3 个值定义:您发送到描述符的动态偏移量、已在描述符中设置的静态偏移量,以及VkBuffer
的 "base address",这是您在将其绑定到一块内存时提供的。
声明的根本原因是让您知道您在描述符中使用的静态偏移量仍然适用。动态偏移量增加了它;它不会覆盖它。
引用 vulkan 规范第 'Descriptor Set Binding' 章:
The effective offset used for dynamic uniform and storage buffer bindings is the sum of the relative offset taken from pDynamicOffsets, and the base address of the buffer plus base offset in the descriptor set.
这似乎没有意义,偏移量不能是地址和其他偏移量的总和。声明真正想表达什么?是最终偏移量 A) pDynamicOffsets 中的偏移量的 sum 和描述符集中的偏移量还是 B) 等于 中的偏移量pDynamicOffsets?
an offset can't be the sum of an address and other offsets
为什么不呢?
当您将 VkBuffer
绑定到一块内存时,您会在该分配范围内提供一个字节偏移量,以指向您希望缓冲区在该内存中存在的位置。该偏移量有时被称为缓冲区的 "base address"(类似的东西用于图像)。
它的意思是,通过描述符可访问的内存范围的开始由 3 个值定义:您发送到描述符的动态偏移量、已在描述符中设置的静态偏移量,以及VkBuffer
的 "base address",这是您在将其绑定到一块内存时提供的。
声明的根本原因是让您知道您在描述符中使用的静态偏移量仍然适用。动态偏移量增加了它;它不会覆盖它。