【问题标题】:Framebuffer/Color Buffer?帧缓冲区/颜色缓冲区?
【发布时间】:2011-11-04 04:18:01
【问题描述】:

如果两者相同,有人可以指出我吗?我的意思是我一直在阅读有关它的信息,这里的红皮书说

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

framebuffer 是否像一个由所有实际缓冲区组成的虚拟缓冲区?(如深度/模板等)

【问题讨论】:

    标签: opengl graphics core-graphics


    【解决方案1】:

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

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

    【讨论】:

    • 好吧,从层次上讲,帧缓冲区总是像不同缓冲区的超集。对吧?虚拟我的意思是它本身(物理上)不像一个真正的缓冲区。例如,联合国是所有国家的集团,但没有像联合国这样的国家。对吗?
    • 帧缓冲是真实的,颜色缓冲也是真实的。就像加拿大是真实的一样,安大略也是真实的。
    【解决方案2】:

    如果您真的想了解这一点,请查看OpenGL Framebuffer Objects。 FBO 是“屏幕外”渲染目标。所有这一切意味着,不是让你的图片出现在你的显示器上,而是将它渲染到其他地方——一个 FBO。在执行此操作之前,您必须创建和配置 FBO。该配置的一部分是添加一个颜色附件——一个保存渲染图片的每像素颜色信息的缓冲区。也许你停在那里,或者你还添加了一个深度附件。如果您正在渲染 3D 几何图形,并且希望它看起来正确,您可能必须添加此深度附件。

    事实上,这是一个很好的实验。编写一个小 OpenGL 程序,将一个简单的 3D 立方体渲染到屏幕上。完成该工作后,将渲染目标更改为您配置的 FBO, 带有颜色附件。很可能,它看起来不太正确,因为 OpenGL 在渲染期间没有地方存储深度信息。繁荣!一切都得到相同的深度。现在为你的 FBO 添加一个深度附件,看看渲染是如何变化的。

    一旦您认为屏幕帧缓冲区基本上是一个默认的、从头开始设置的 FBO,那么很明显,一个帧缓冲区由多个缓冲区组成。

    【讨论】:

      猜你喜欢
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      相关资源
      最近更新 更多