2015-08-15 24 views
1

我看到这个:Android SurfaceView doc。在上下文丢失它说:不需要在android中做opengl删除功能吗?

有些情况下,EGL渲染上下文将丢失。这通常发生在设备在睡觉后醒来时。当EGL上下文丢失时,与该上下文关联的所有OpenGL资源(例如纹理)将被自动删除。

这是否意味着我不必打电话给例如GLES20.GLES20.glDeleteTextures(...);并且android会为我清理那个?我也看到没有关于android opengl的教程提到了删除函数,甚至没有提到Developer.android上的“官方”函数。

(Ofcourse我认为,当我不需要为我的对象更多的内存,这是只适用)

所以,做任何你知道吗?我必须手动删除opengl的东西吗?

回答

3

当上下文被销毁时,上下文中创建的所有对象都会自动删除。这种行为在附录C中的ES 2.0规范定义下的“对象删除行为”:

一旦股名单上的最后一个背景下被破坏,所有的共享对象,以及所有其他资源分配给该上下文或共享清单,将尽快删除并回收执行。

如果您有多个上下文,事情会变得更复杂一些。但是在单个情境下,所有对象都会与上下文一起消失。

当然,如果在执行过程中有不再需要的对象,您仍然应该使用相应的glDelete*()调用删除它们。否则,你会有越来越多的物体堆积起来。但是在清理过程中不需要删除对象。