2011-11-04 259 views
2

如果两个人都一样,有人能指出我吗?我的意思是我一直在阅读有关它的信息,在这里本红皮书说帧缓冲区/颜色缓冲区?

“颜色缓冲区本身可以由多个子缓冲器的。一个系统上的帧缓冲区包含所有这些缓冲器” here

是帧缓冲,然后像(如深度/模板等)

回答

6

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

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

+0

好了,所以说层次帧缓冲总是喜欢不同的缓冲区的一个超集..对不对?通过虚拟,我的意思是它本身(物理上)不像真正的缓冲区。例如,联合国是所有国家的集团,但没有像联合国这样的国家。那是对的吗? – Manish

+1

帧缓冲区是真实的,并且颜色缓冲区也是真实的。就像加拿大是真实的,安大略省也是真实的。 –

5

如果你真的想这个神交,看看OpenGL Framebuffer Objects。 FBO是“屏幕外”渲染目标。所有这一切意味着,不是让你的照片出现在你的显示器上,而是将它呈现给别的地方 - 一个FBO。在做到这一点之前,您必须创建并配置FBO。该配置的一部分是添加一个颜色附件 - 一个缓冲区来保存渲染图片的每个像素的颜色信息。也许你会在那里停下来,或者你也可以添加深度附件。如果你是渲染3D几何,而你希望它看起来是正确的,你可能会添加此深度的附件。

事实上,这是一个很好的尝试。编写一个小型的OpenGL程序,将一个简单的3D立方体渲染到屏幕上。一旦你的工作,你的渲染目标更改为您一个附色配置FBO。很可能,它看起来不太对,因为OpenGL在渲染过程中没有地方存储深度信息。繁荣!一切都有相同的深度。现在给你的FBO添加一个深度附件,看看渲染是如何改变的。

一旦你认为屏幕帧缓冲区基本上是默认的,设置 - 从最开始FBO,这是很清楚的是,帧缓存由多个缓冲区。