VK_KHR_draw_indirect_count

在 Vulkan 1.2 中提升为核心

每次调用 vkCmdDraw 都会消耗一组描述绘制调用的参数。为了将绘制调用批处理在一起,相同的参数存储在 VkBuffer 中,以 VkDrawIndirectCommand 的块为单位。使用 vkCmdDrawIndirect 允许您调用 drawCount 次绘制,但 drawCount 需要在记录时存在。新的 vkCmdDrawIndirectCount 调用允许 drawCount 也位于 VkBuffer 中。这允许 drawCount 的值是动态的,并在执行绘制调用时确定。

如果支持扩展或 VkPhysicalDeviceVulkan12Features::drawIndirectCount 特性位为 true,则可以使用 vkCmdDrawIndirectCountvkCmdDrawIndexedIndirectCount 函数。

下图用于可视化 vkCmdDrawvkCmdDrawIndirectvkCmdDrawIndirectCount 之间的差异。

VK_KHR_draw_indirect_count example