我试图了解为什么我们需要VkAttachmentReference::layout
?文档说:
layout
是一个VkImageLayout
值指定布局附件 在子通道期间使用。
换句话说,它告诉subpass开始之前,该附件将要过渡到哪种布局。
但是,此信息已经通过VkAttachmentDescription::initialLayout
获得。这是文档的报价:
initialLayout
是附件图像子资源的布局 在渲染通过实例开始时。
VkAttachmentReference::layout
redundand不是因为它精确地重复了 VkAttachmentDescription::initialLayout
?
no,通过 initialLayout
,您指定布局在之前仅在中。它可以是任何事物,例如以前的渲染通行证中的finalLayout
。或新创建的图像的undefined
布局。或从Swapchain获取的图像的present_src
布局。
然后将图像自动从initialLayout
自动转移到针对给定子通道指定的布局。如果您有更多的子通道,那么在每个人中,您都可以以不同的方式使用图像,而不必担心手动过渡。
驱动程序需要这两个布局参数才能知道它应该执行什么过渡。Vulkan是一个明确的API,驾驶员不会跟踪任何信息(或跟踪较小的可使(。没有initialLayout
布局自动过渡将是不可能的。