4

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

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

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

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

4

1 回答 1

7

注意语言的区别:

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

finalLayout是在渲染过程实例结束时附件图像子资源将转换到的布局。

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

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

我假设适用于图像障碍的 oldLayout 的相同规则也适用于这里的 initialLayout。尤其:

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

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

于 2016-06-03T12:25:06.843 回答