每个 VkImageView 都需要一个 VkFramebuffer 吗?

Do I need a VkFramebuffer for each VkImageView?

我正在按照本教程学习 Vulkan:https://vulkan-tutorial.com .

我在帧缓冲区部分:https://vulkan-tutorial.com/en/Drawing_a_triangle/Drawing/Framebuffers

似乎作者正在为之前创建的每个 VkImageView 绑定不同的 VkFramebuffer。他创建了 3 个 VkImageView,所以现在他创建了 3 个 VkFramebuffer。有这个必要吗?

教程是这样说的:

You can only use a framebuffer with the render passes that it is compatible with, which roughly means that they use the same number and type of attachments.

这是否意味着我可以创建一个包含所有已创建 VkImageView 的 VkFramebuffer 而不是只要我在 renderpass 中指定它?

也许您对代码的作用感到困惑。

渲染到 VkFramebuffer 意味着使用该帧缓冲区启动渲染通道以提供渲染通道的附件。 所有 个附件。如果你有一个带有 3 个附件的帧缓冲区,这意味着你有一个包含 3 个附件的渲染通道,并且你正在渲染所有这些附件(在渲染通道期间;单个子通道渲染到附件的一个子集)。

但这不是这段代码的作用。此代码想要在不同时间 呈现不同的图像。因此,在一帧上,它渲染到一个图像,在下一帧上,它渲染到不同的图像,依此类推。

为此,您需要不同的 VkFramebuffer 个对象。