Vulkan-两个不同的finalLayout是否需要两个不同的RenderPass?

vulkan Renderpass对象也使用最终布局定义,在渲染过程完成时,将rendertarget转换到该目标。 假设我具有执行渲染任务A的渲染通道,但是在一种情况下,我需要在屏幕上表示结果(最终布局为VK_IMAGE_LAYOUT_PRESENT_SRC_KHR),在另一种情况下,我需要准备好进行另一次渲染(最终布局为VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL ), 这两种情况是否需要创建两个renderpass对象?

bcp123 回答:Vulkan-两个不同的finalLayout是否需要两个不同的RenderPass?

渲染过程还具有初始布局,该布局指定了渲染过程开始之前图像所处的布局。再加上为每个子通道定义的布局,将使渲染过程系统对各个子通道执行隐式布局转换。

因此,您所需要做的就是告诉第二个渲染通道附件将位于当前布局中,并适当地设置子通道布局。当然,附件的加载操作应该是加载数据,而不是清除数据等。

,

好,谢谢@Nicol Bolas,我了解我在这里错过了一些事情,为了避免其他新手陷入这个错误,我在这里解释我的错误。

创建点线时,需要将renderpass句柄设置为VkGraphicsPipelineCreateInfo :: renderPass。

像我这样的新手了解到,这意味着创建了renderpass并与管道耦合,并且只能使用此管道进行渲染。绝对不正确。该参数仅告知管道应在哪种类型的renderpass(渲染目标布置)上进行渲染。但是渲染通道未与此管道耦合。可以使用不同的管线在同一渲染通道中进行绘制,并且可以将管线与不同的渲染通道一起使用,只要这些渲染通道具有与根据其创建管线的结构相似的结构即可。

因此,关于本文中的问题-不需要两个管道,但是我们可以使用相同的管道供两个渲染通道使用。

本文链接:https://www.f2er.com/3042394.html

大家都在问