多个视口与多个帧缓冲区之间的使用差异是什么?

What are the usage differences between multiple viewports vs multiple framebuffers?

我刚开始学习 OpenGL,帧缓冲区的主题让我很困惑。我读到它的一些用途是生成第二个渲染目标,允许我们制作镜子等。但是,使用 glViewport() 还不够吗,您可以在其中为不同的部分指定不同的渲染操作相同的帧缓冲区? 2 之间的使用差异是什么?我应该在什么时候使用它们?

这两个概念是完全正交的;它们根本不相互映射。

理论上,您可以通过渲染到帧缓冲区图像的不可见部分来执行某些形式的离屏渲染。假设帧缓冲区图像有 个不可见部分。假设我们谈论的是默认帧缓冲区,这完全不在您的控制范围内。您无法确定背景图像数据有多大;这由 OS 控制,通常是通过要渲染到的 window 的大小来控制。

使用适当的帧缓冲区对象,您不必尝试让 OS 为您提供比 window 中可见的更多 space。你可以随便做。

视口的存在是为了让您可以选择在帧缓冲区的可渲染区域内进行渲染的位置。 framebuffer object exists to allow you to allocate and manage the images you render to, thus giving you complete control over all aspects of the framebuffer. This includes using non-visible color formats(例如整数格式、浮点格式),同时使用 多个 渲染目标,直接控制多重采样的使用,并能够从将目标渲染为纹理 而无需 从帧缓冲区执行缓慢的复制操作。

两人真的没什么关系