首页 > 解决方案 > 在绘制命令之间每帧设置任意数量的剪刀

问题描述

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

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

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

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

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

标签: c++vulkan

解决方案


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

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


推荐阅读