帧缓冲/颜色缓冲?

4

请问有人能告诉我它们是否相同吗?我的意思是,我一直在阅读有关信息,这本红皮书说:

"颜色缓冲区本身可以由几个子缓冲区组成。系统上的帧缓冲区包括所有这些缓冲区" 这里

那么,帧缓冲区是否像一个虚拟缓冲区,包含所有实际缓冲区?(例如深度/模板等)

2个回答

8

帧缓冲包含了(通常)深度、模板、颜色和累加缓冲区。其中颜色缓冲区是最重要的部分,但它们只是其中的一部分。您可以创建更多的颜色缓冲区,也可以在OpenGL中创建更多的帧缓冲区。

当您说“虚拟帧缓冲区”时,有时意味着一个不会被绘制到屏幕上的帧缓冲区(例如,它被写入磁盘或用作纹理)。我相信这个术语是特定于X11而不是OpenGL的。


好的,从层次结构上讲,帧缓冲区始终是不同缓冲区的超集..对吗?我所说的虚拟是指它本身并不像一个真正的缓冲区(物理上)..例如,联合国是所有国家的组合,但没有像联合国这样的国家。这正确吗? - Manish
1
帧缓冲是真实的,颜色缓冲也是真实的。就像加拿大是真实的,安大略省也是真实的。 - Dietrich Epp

6
如果您真的想理解这个,可以看一下OpenGL Framebuffer Objects。 FBO是“离屏”渲染目标。 这只是意味着,您不会在显示器上显示图片,而是将其渲染到其他地方 - FBO上。 在此之前,您必须创建和配置FBO。 其中一部分配置是添加颜色附件 - 用于保存呈现图片的每个像素颜色信息的缓冲区。 可能您就停在这里,或者您还可以添加深度附件。 如果您正在呈现3D几何图形,并且希望它看起来正确,您可能需要添加这个深度附件。
事实上,这是一个很好的实验。 编写一个小的OpenGL程序,将简单的3D立方体呈现到屏幕上。 一旦您完成了这个过程,将呈现目标更改为仅配置有颜色附件的FBO。 可能,它看起来不太对,因为OpenGL没有在渲染过程中存储深度信息的地方。 突然间! 所有东西都具有相同的深度。 现在向您的FBO添加深度附件,看看呈现如何变化。
一旦您考虑到屏幕帧缓冲区基本上是一个默认的、从开始设置的FBO,那么很明显,一个帧缓冲区由多个缓冲区组成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接