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

Posted

技术标签:

【中文标题】纹理可以绑定到多个 fbo 吗?【英文标题】:Can a texture be bound to more than one fbo? 【发布时间】:2013-08-04 23:18:50 【问题描述】:

可以将同一个纹理绑定到多个帧缓冲区对象吗? 我需要在具有特定 fbo 的多目标渲染通道中写入一些纹理,然后将一些混合添加到其中一个纹理中,因此我需要第二个帧缓冲区对象,该对象绑定到该纹理。

【问题讨论】:

【参考方案1】:

我不知道为什么你会认为你不能附加一个纹理到多个 FBO。所以是的,你可以。

但是,出于您的目的,您不需要这样做。您不必写入附加到 FBO 的所有图像。你control what images get written to 和glDrawBuffers。如果您需要写入多个缓冲区但只与某些缓冲区混合,您甚至可以selectively enable and disable blending to certain draw buffers。

所以是的,你可以,但你不应该打扰。只需切换绘图缓冲区,除非您需要新的深度缓冲区或其他东西。

【讨论】:

如果我想从绑定到我正在写入的同一个 FBO 的纹理中读取怎么办?假设我的 FBO 与 TextureA 和 TextureB 绑定在一起。我想在 TextureA 上混合 TextureB。如果我只是将 glDrawBuffers 更改为仅在 TextureA 上渲染就可以了吗?换句话说,当我在绑定了这种纹理的 FBO 上写入时,如果我不写入该特定纹理,我可以从纹理中读取吗? @darius:这是一个全新的问题。因此,请使用“提问”按钮来提问。或者只是look up the answer on the OpenGL Wiki。

以上是关于纹理可以绑定到多个 fbo 吗?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

这个错误是啥意思?模拟器:FramebufferData::restore: 警告:纹理被删除而不解除绑定 FBO

OpenGL 渲染到 FBO

带有 FBO 的 OpenGL 阴影映射 - 多个拖尾绘制