绘制到纹理后的 Opengl ES 2.0 glDeleteFramebuffers

Opengl ES 2.0 glDeleteFramebuffers after drawing to texture

我使用帧缓冲区渲染到纹理。但是我不确定什么时候应该正确使用glDeleteFramebuffers。纹理存在时 fbo 是否应该存在,或者我可以在最后一次绘制到纹理后安全地调用 glDeleteFramebuffers

您可以在最后一次绘制到纹理后安全地调用 glDeleteFramebuffers。但是,我会假设创建和销毁帧缓冲区是昂贵的,所以我只会在我确定我不会再渲染到该纹理的情况下才这样做。

我在某些 Android GLES 驱动程序上遇到过错误,在这些驱动程序中我不得不在删除帧缓冲区之前将纹理与帧缓冲区分离,因此我建议您这样做以防万一:

glBindFramebuffer(GL_FRAMEBUFFER, frameBuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0);