将 2 个纹理绑定到一个或两个 FBO 是不是更快?

Posted

技术标签:

【中文标题】将 2 个纹理绑定到一个或两个 FBO 是不是更快?【英文标题】:Is it faster to bind 2 textures to one or two FBO?将 2 个纹理绑定到一个或两个 FBO 是否更快? 【发布时间】:2011-03-16 17:39:19 【问题描述】:

我想一个接一个地运行几个着色器(主要是图像处理),一个的输出是以下的输入。我想知道只使用一个绑定到所有需要的纹理的 FBO 是否会提高性能,或者为每个纹理创建一个 FBO 是否相同?

如果重要的话,目标平台是 iPhone,因此使用 OpenGL ES 2.0。

谢谢

【问题讨论】:

【参考方案1】:

我不熟悉 OpenGL ES,但在 PC 平台上通常最好只使用一个 FBO,我不明白为什么这在 ES 上应该有所不同(但是,我可能错了)。重要的是,所有绑定的纹理都具有相同的大小(例如视口大小)以确保 FBO 的完整性,否则它将不起作用。 通常,您最初将所有纹理附加到一个 FBO,然后在每一帧中,只需在每个通道中更改渲染目标通道。这为您节省了大量由 fbo 绑定引起的状态更改。 请注意,可以绑定的最大纹理数量受 GL_MAX_COLOR_ATTACHMENTS_EXT 的限制。 您可能还会发现这很有帮助:http://www.songho.ca/opengl/gl_fbo.html

干杯, 再接再厉

【讨论】:

以上是关于将 2 个纹理绑定到一个或两个 FBO 是不是更快?的主要内容,如果未能解决你的问题,请参考以下文章

将绑定到 FBO 的纹理复制到另一个 OpenGL 上下文

纹理可以绑定到多个 fbo 吗?

使用 FBO 和着色器 OpenGL 渲染到纹理

为啥从 FBO 解除绑定纹理会清除纹理?

FBO 和纹理

从纹理渲染到屏幕外纹理 (FBO)