进入下一个子过程
译者注:示例代码点击此处
在渲染过程中记录的命令被划分为子过程。当一个给定子过程的一组命令已经被记录并且我们想要记录另一个子类的命令时,我们需要切换(或前进)到下一个子过程。
怎么做...
获取正在记录的命令缓冲区的句柄,并将其存储在名为command_buffer的vkcommandbuffer类型变量中。确保开始渲染过程的操作已记录在命令缓冲区中。
指定如何记录子过程命令:直接或通过辅助命令缓冲区。 将适当的值存储在名为subpass_contents的VkSubpassContents类型变量中(请参阅开始渲染过程配方)。
调用vkCmdNextSubpass( command_buffer, subpass_contents )。请提供command_buffer和subpass_contents变量。
这个怎么运作...
进入到下一个子过程会在同一渲染过程中从当前切换到下一个子过程。 在此操作期间,将执行适当的布局转换,并引入内存和执行依赖性(类似于内存屏障中的那些)。 如果需要,所有这些都由驱动程序自动执行,因此新子过程中的附件可以在创建渲染过程中指定的方式使用。 移至下一个子过程还会对指定的颜色附件执行多重采样解析操作。
子过程的命令可以直接记录,方法是将它们嵌入命令缓冲区,或者间接执行辅助命令缓冲区。
要记录从一个子过程切换到另一个子过程的操作,我们需要调用如下函数:
vkCmdNextSubpass( command_buffer, subpass_contents );