据我了解,VkVertexInputBindingDescription stride 是顶点缓冲区元素块的大小,而 vkCmdBindVertexBuffers offset 是与顶点缓冲区元素块的偏移量。
vkCmdBindVertexBuffers 偏移量不能超过 VkVertexInputBindingDescription 步幅大小。
我检查了WebGPU和DX12图形API,API步幅和偏移大小相同。
Vulkan 是否遗漏了什么?或者我遗漏了什么?
据我了解,VkVertexInputBindingDescription stride 是顶点缓冲区元素块的大小,而 vkCmdBindVertexBuffers offset 是与顶点缓冲区元素块的偏移量。
vkCmdBindVertexBuffers 偏移量不能超过 VkVertexInputBindingDescription 步幅大小。
我检查了WebGPU和DX12图形API,API步幅和偏移大小相同。
Vulkan 是否遗漏了什么?或者我遗漏了什么?
步幅是每个元素的大小,偏移量是从缓冲区开始读取的位置。
这样,您就可以保存具有不同步幅的数据:
然后设置步幅为 4 的元素作为读取元素
offset=0
,然后设置步幅为 8 的元素作为读取元素offset=4*4
。缓冲区可能大于 4 GiB,这就是为什么
uint64_t
使用它作为偏移量。