Opengl 我必须在程序结束时使用glDeleteTextures()吗?

Opengl 我必须在程序结束时使用glDeleteTextures()吗?,opengl,memory-management,textures,Opengl,Memory Management,Textures,在一些示例代码中看到了这一点,但我从未使用过它,除非我动态打开新的不同大小的纹理等 那么,当我的应用程序终止时,我的操作系统或其他东西是否负责释放纹理内存?或者我必须自己释放它吗?像其他资源一样,如果你不释放,大多数操作系统都会释放它们 通常,这样做是为了确保在程序运行时不会泄漏任何资源。例如,假设您加载了级别,如果在继续加载级别时不释放所有纹理,迟早会耗尽内存。如果您在退出时进行清理,则更容易跟踪泄漏。来自Android GLSURFACHEVIEW。渲染器文档: public abstrac

在一些示例代码中看到了这一点,但我从未使用过它,除非我动态打开新的不同大小的纹理等


那么,当我的应用程序终止时,我的操作系统或其他东西是否负责释放纹理内存?或者我必须自己释放它吗?

像其他资源一样,如果你不释放,大多数操作系统都会释放它们


通常,这样做是为了确保在程序运行时不会泄漏任何资源。例如,假设您加载了级别,如果在继续加载级别时不释放所有纹理,迟早会耗尽内存。如果您在退出时进行清理,则更容易跟踪泄漏。

来自Android GLSURFACHEVIEW。渲染器文档:

public abstract void onSurfaceCreated (GL10 gl, EGLConfig config)
自:API 3级 创建或重新创建曲面时调用。 在渲染线程启动和EGL上下文丢失时调用。当Android设备在睡眠后醒来时,EGL上下文通常会丢失。 由于此方法在渲染开始时调用,以及每次EGL上下文丢失时调用,因此此方法是放置代码以创建资源的方便位置,这些资源需要在渲染开始时创建,并且需要在EGL上下文丢失时重新创建。纹理是您可能希望在此处创建的资源的一个示例。 请注意,当EGL上下文丢失时,与该上下文关联的所有OpenGL资源将自动删除。您不需要调用相应的“glDelete”方法(如glDeleteTextures)来手动删除这些丢失的资源。