opengl-es - 绘制到纹理后的 Opengl ES 2.0 glDeleteFramebuffers

标签 opengl-es opengl-es-2.0 delete-operator framebuffer

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

最佳答案

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

我在某些 Android GLES 驱动程序上遇到了错误,我必须在删除帧缓冲区之前将纹理与帧缓冲区分离,因此我建议您这样做作为预防措施:

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

关于opengl-es - 绘制到纹理后的 Opengl ES 2.0 glDeleteFramebuffers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56254797/

相关文章:

android - 如何链接游戏引擎和安卓游戏?

java - opengl es 2.0 填充顶点和索引缓冲区

C++ 删除指针本身而不是删除指向数据

c++ - 在堆中创建数组并使用/不使用 shared_ptr 删除它时崩溃

ios - 使用渲染缓冲区和帧缓冲区时是否应该清除 OpenGL 状态?

opengl-es - GLSL OpenGL ES 2.0 (iOS) 中有噪声函数吗?

performance - 如何在没有 ("<<"的情况下执行位移位 || ">>") 运营商有效吗?

c++ - OpenGLESv2 着色器 glGetAttribLocation 返回 -1

c++ - SDL 2.0 Sprite 在 OpenGL 绘制后绘制倾斜(转换)

c++ - 测试对象是否被删除