【问题标题】:Can multiple subpass be used with single pipeline in vulkan多个子通道可以与 vulkan 中的单个管道一起使用吗
【发布时间】:2017-06-20 21:32:26
【问题描述】:

VkGraphicsPipelineCreateInfo 具有整数成员 subpass

我的用例是创建单个管道对象并将其与多个子通道一起使用。每个子通道都有不同的颜色附件。

【问题讨论】:

    标签: vulkan


    【解决方案1】:

    没有。管道始终是相对于特定渲染通道的 特定 子通道构建的。它不能用于任何其他子通道:

    当前渲染通道的子通道索引必须等于在创建当前绑定到VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的VkGraphicsPipelineCreateInfo 结构的subpass 成员。

    您将需要创建多个管道,一个用于您打算使用它的每个子通道。对于不太关心这个的实现,管道缓存应该可以提高效率。

    【讨论】:

    • 此外,希望对多个子通道使用相同的管道并不是子通道的常见用例。如果你想这样做,这可能是一个信号,表明有一种更简单或更有效的方法来做你想做的事情。通常在多子通道渲染通道中,每个子通道执行整体渲染算法的不同子算法,因此着色器(以及因此管道)会有所不同。
    • @NicolBolas 但是,在 7.2 Render Pass Compatibility (1.1.78) 中说“图形管道是基于特定的渲染通道对象创建的。它们只能与该渲染通道对象一起使用,或者一个兼容的用它。”。暗示您可以使用具有不同渲染通道的管道。你的意思是它必须总是(比如)任何渲染通道的子通道 3?
    • @PabloH:考虑一下第 7.2 节给你的变化空间有多大。兼容渲染通道的子通道 3 将使用兼容的附件、完全相同的子通道状态(附件使用等)、相同的依赖项集等。是的,管道必须在为其定义的子通道中使用。
    猜你喜欢
    • 1970-01-01
    • 2022-07-05
    • 2018-11-01
    • 2019-10-18
    • 2021-12-16
    • 1970-01-01
    • 2021-10-26
    • 2016-11-21
    • 1970-01-01
    相关资源
    最近更新 更多