在绘制命令之间的每帧设置任意数量的剪刀

Set Arbitrary Amount Of Scissors Each Frame Between Draw Commands

我想知道是否可以在多个绘图命令之间更改剪刀矩形。

VkCmdSetScissor
VkCmdDraw..
VkCmdDraw..
VkCmdSetScissor
VkCmdDraw..
VkCmdDraw..
VkCmdSetScissor
VkCmdDraw..
VkCmdDraw..
VkCmdSetScissor

在上面的伪代码中,我会在每组绘图命令之间将剪刀矩形设置为屏幕上的不同坐标。每次剪刀的尺寸都不一样。

目前,似乎只有对 VkCmdSetScissor 的最后一次调用才最终被应用。

我的应用程序需要在屏幕上设置几十个不同的小剪刀来绘制 GUI 元素。目前没有办法知道每一帧需要多少剪刀,也没有任何可以想象的方法可以知道在管道创建过程中需要多少剪刀。

是的,这是可能的,上面的伪代码正是应该如何完成的。当然,您必须在管道上设置 VK_DYNAMIC_STATE_SCISSOR

我的问题是我使用单个 VkCmdDraw 命令来绘制整个 GUI。在将各个 GUI 元素拆分为 VkCmdDrawIndirectCommand 并在每个适当的 VkCmdDrawIndirect 之间放置一个 VkCmdSetScissor 之后,一切开始正常工作。