绘制到纹理后的Opengl ES 2.0 glDeleteFramebuffers

Posted

技术标签:

【中文标题】绘制到纹理后的Opengl ES 2.0 glDeleteFramebuffers【英文标题】:Opengl ES 2.0 glDeleteFramebuffers after drawing to texture 【发布时间】:2019-05-22 10:31:01 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

我遇到了一些 android GLES 驱动程序的错误,我必须在删除帧缓冲区之前从帧缓冲区中分离纹理,因此我建议您这样做以防万一:

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

【讨论】:

非常感谢您的帮助和推荐,非常感谢。

以上是关于绘制到纹理后的Opengl ES 2.0 glDeleteFramebuffers的主要内容,如果未能解决你的问题,请参考以下文章

OPENGL ES 2.0 知识串讲 ——OPENGL ES 详解III(纹理)

渲染到纹理 OpenGL ES 2.0

使用 OpenGL ES 2.0 绘制 2D 图像

OpenGL ES 2.0 Framebuffer 渲染到纹理 iOS:没有显示

Android Opengl ES 2.0 FrameBuffer 不工作

OPENGL ES 2.0 知识串讲 (10) ——OPENGL ES 详解IV(纹理优化)