GLSL Renderbuffer真的需要吗?

GLSL Renderbuffer真的需要吗?,glsl,Glsl,我正在尝试编写一个程序,将摄像机帧写入一个四边形。 我看到一些教程解释了使用帧缓冲区可以更快,但仍在学习如何做到这一点。 但是除了帧缓冲区,我发现还有renderbuffers 问题是,如果目的只是将一个纹理写入一个四边形以填充屏幕,那么我真的需要一个renderbuffer吗 我知道renderbuffers用于深度测试,我认为这只是用于检查像素的Z位置,因此必须为我的场景创建渲染缓冲区是愚蠢的,对吗?a是一个粘贴图像的地方,以便您可以渲染它们。颜色缓冲区、深度缓冲区等都进入帧缓冲区对象 A类

我正在尝试编写一个程序,将摄像机帧写入一个四边形。 我看到一些教程解释了使用帧缓冲区可以更快,但仍在学习如何做到这一点。 但是除了帧缓冲区,我发现还有renderbuffers

问题是,如果目的只是将一个纹理写入一个四边形以填充屏幕,那么我真的需要一个renderbuffer吗

我知道renderbuffers用于深度测试,我认为这只是用于检查像素的Z位置,因此必须为我的场景创建渲染缓冲区是愚蠢的,对吗?

a是一个粘贴图像的地方,以便您可以渲染它们。颜色缓冲区、深度缓冲区等都进入帧缓冲区对象

A类似于纹理,但有两个重要区别:

  • 它始终是二维的,并且没有mipmap。所以它总是正好是一张图片
  • 无法从renderbuffer中读取。可以将它们附加到FBO并对其进行渲染,但不能使用纹理访问或其他方式对其进行采样
  • 你说的是两个基本上不同的概念。Renderbuffers不必“用于深度测试”。这是Renderbuffers的常见用例,因为如果要将颜色渲染到纹理,通常不关心深度。您需要一个深度,因为您需要对隐藏曲面移除进行深度测试。但你不需要从那个深度取样。因此,不制作深度纹理,而是制作深度渲染缓冲

    但是renderbuffers也可以使用颜色而不是深度格式。不能将它们附加为纹理。您仍然可以从/到它们进行blit,并且仍然可以使用
    glReadPixels
    将它们读回。在着色器中无法读取它们

    奇怪的是,这并不能回答您的问题:

    问题是,如果目的只是将一个纹理写入一个四边形以填充屏幕,那么我真的需要一个renderbuffer吗


    我不明白你为什么需要帧缓冲区或任何类型的渲染缓冲区。纹理就是纹理;只需绘制一个带纹理的四边形。

    我之所以需要使用帧缓冲区,是因为当我在某些页面中阅读时,这是进行乒乓渲染的唯一方法。我的意图是使用这种技术来应用几个过滤效果,因此我需要一种方法,在通过碎片着色器后重新使用纹理的输出,以便根据需要传递一些其他效果。@user848253:将来,如果你对你实际做的事更加坦率,你将更有可能获得准确的信息,而不是提供尽可能少的信息。在你的问题中,你所说的是,你正在尝试编写一个全屏四元结构的纹理。好吧,我仍然在整理所有内容,因为对我来说都是新的,我正在阅读一些教程,但找不到一个能直接显示所有概念的教程。总体思路是使用着色器处理视频帧,应用多个过滤器,然后将其输出到屏幕中的四元组。