Vulkan附件说明

Tem*_*890 2 vulkan

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

initialLayout是呈现阶段实例开始时附件图像子资源将位于的布局。

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

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

Qui*_*ion 5

注意语言上的差异:

initialLayout是呈现阶段实例开始时附件图像子资源位于的布局。

finalLayout是渲染阶段实例结束时附件图像子资源将转换为的布局。

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

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

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

oldLayout必须为VK_IMAGE_LAYOUT_UNDEFINED,VK_IMAGE_LAYOUT_PREINITIALIZED或受障碍影响的图像区域的当前布局。

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