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

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

在上面的伪代码中,我将在每个绘图命令集之间将剪刀矩形设置为屏幕上的不同坐标。每次剪刀的大小都会不同。

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

我的应用程序需要在屏幕上设置数十种不同的小剪刀才能绘制GUI元素。当前没有办法知道每帧需要多少个剪刀,也没有想像的方法可以知道在管道创建期间需要多少个剪刀。

最佳答案

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

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

关于c++ - 在绘制命令之间每帧设置任意数量的剪刀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58939887/

10-12 00:10