微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

每个 VkImageView 都需要一个 VkFramebuffer 吗?

如何解决每个 VkImageView 都需要一个 VkFramebuffer 吗?

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

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

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

教程是这样说的:

您只能将帧缓冲区与其兼容的渲染通道一起使用,这大致意味着它们使用相同数量和类型的附件。

这是否意味着我可以创建一个包含所有创建的 VkImageViews 的 VkFramebuffer,只要我在渲染通道中指定它?

解决方法

也许您对代码在做什么感到困惑。

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

但这不是这段代码所做的。此代码希望在不同时间呈现不同的图像。因此,在一帧上,它渲染到一个图像,在下一帧上,它渲染到另一个图像,依此类推。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。