【问题标题】:Vulkan attachment descriptionVulkan 附件说明
【发布时间】:2016-10-03 07:10:57
【问题描述】:

渲染通道附件需要字段初始布局和最终布局,文档中对此进行了描述:

initialLayout 是渲染通道实例开始时附件图像子资源所在的布局。

finalLayout 是在渲染过程实例结束时附件图像子资源将转换到的布局。在渲染通道实例期间,如果需要,附件可以在每个子通道中使用不同的布局。

这是否意味着当我们调用和结束渲染通道实例时附件将自动转换,还是意味着程序员应该在渲染通道之前和之后转换到这些布局?谢谢

【问题讨论】:

    标签: vulkan


    【解决方案1】:

    注意语言的区别:

    initialLayout 是渲染通道实例开始时附件图像子资源将处于的布局

    finalLayout 是当渲染通道实例结束时附件图像子资源将转换到的布局

    如果您认为渲染通道需要在子通道之间自动插入布局过渡,则更清楚。为此,在任何时候它都必须知道附件当前所在的布局以及它需要转换到的布局。 InitialLayout 提供有关图像子资源在进入渲染通道时所处的布局的信息。

    自动布局转换确实发生在渲染通道的开始,但是,从 initialLayout 到在第一次使用附件的子通道的附件引用中指定的布局。同样,从最后一个 subpass 使用的布局到分配给 finalLayout 的布局有一个自动布局转换。

    我假设适用于图像屏障的 oldLayout 的相同规则也适用于这里的 initialLayout。值得注意的是:

    oldLayout 必须是 VK_IMAGE_LAYOUT_UNDEFINED、VK_IMAGE_LAYOUT_PREINITIALIZED 或受屏障影响的图像区域的当前布局。

    因此,initialLayout 可以用作是否要丢弃图像内容的提示。我很惊讶附件描述的有效用法中也没有包含有效的图像布局。

    【讨论】:

    • 至于最后一段;您可以使用加载操作表示您想在渲染通道开始时丢弃或清除附件。
    • 这说明了很多事情。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2017-07-10
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2017-01-20
    相关资源
    最近更新 更多