glDeleteFramebuffers 删除帧缓冲区对象,它是否删除附加到该帧缓冲区的纹理?

Joh*_*ohn 6 opengl-es-2.0

平台:Android OpenGL ES 2.0

我正在使用FBO,这个FBO附加了一个纹理,使用后,我使用glDeleteFramebuffers来释放FBO,问题是:我还需要手动释放我创建的纹理吗?或者 glDeleteFramebuffers 也会释放附加到它的纹理?

Jam*_*ord 7

我本以为你还必须释放你创建的每个纹理。每个创建调用都应该有一个删除调用。

  • @Eric:另请注意,如果在附加到 FBO 时删除纹理,则实际内存将不会被释放,直到它与任何和所有 FBO 分离。所发生的只是名称(id)进入“免费”纹理名称列表以供重复使用。数据存储将持续存在,以防止 FBO 调用未定义的行为,OpenGL/ES 中的几乎所有容器对象都以这种方式工作:VAO、FBO、GLSL 程序等。 (2认同)