如果他们两个都一样,有人能指出我吗?我的意思是我一直在阅读有关它的信息,这里的红皮书说
“颜色缓冲区本身可以包含多个子缓冲区。系统上的帧缓冲区包含所有这些缓冲区”here
帧缓冲然后就像一个由所有实际缓冲区组成的虚拟缓冲区吗?(如深度/模板等)
答案 0 :(得分:7)
帧缓冲区(通常)包含深度,模板,颜色和累积缓冲区。颜色缓冲区是最重要的部分,但它们只是一部分。您可以创建更多颜色缓冲区,还可以在OpenGL中创建更多帧缓冲区。
当你说“虚拟帧缓冲区”时,有时意味着没有被绘制到屏幕的帧缓冲区(例如,它被写入磁盘,或用作纹理)。我相信这个术语特定于X11,而不是OpenGL。
答案 1 :(得分:6)
如果您真的想要了解这一点,请查看OpenGL Framebuffer Objects。 FBO是“屏幕外”渲染目标。所有这些意味着,不是让你的图片出现在你的显示器上,而是将它渲染到其他地方 - 一个FBO。在此之前,您必须创建和配置FBO。部分配置是添加颜色附件 - 一个缓冲区,用于保存渲染图片的每像素颜色信息。也许你就在那里,或者你也可以添加一个深度附件。如果要渲染3D几何体,并且希望它看起来正确,则可能 添加此深度附件。
事实上,这是一个很好的实验。编写一个小型OpenGL程序,将简单的3D立方体渲染到屏幕上。完成后,将渲染目标更改为使用仅颜色附件配置的FBO。可能,它看起来不太正确,因为OpenGL在渲染过程中没有地方存储深度信息。繁荣!一切都得到了同样的深度。现在为FBO添加深度附件,并查看渲染的更改方式。
一旦你认为屏幕帧缓冲区基本上是默认的,从一开始就设置FBO,很明显帧缓冲区由多个缓冲区组成。