每个 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
个对象。
我正在按照本教程学习 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
个对象。