【问题标题】:No need to do opengl delete functions in android?不需要在android中做opengl删除功能吗?
【发布时间】:2015-08-15 23:07:35
【问题描述】:

我看到了这个:Android SurfaceView doc。在 Context lost 它说:

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

这是否意味着我不必调用例如 GLES20.GLES20.glDeleteTextures( ... ); 并且 android 会为我清理它?我还看到没有关于android opengl es的教程提到删除功能,甚至Developer.android上的“官方”也没有。

(当然我假设这仅适用于我的对象不需要更多内存时)

那么你们中有人知道吗?我必须手动删除 opengl 的东西吗?

【问题讨论】:

    标签: java android memory-management opengl-es


    【解决方案1】:

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

    一旦共享列表上的最后一个上下文被销毁,所有共享对象以及为该上下文或共享列表分配的所有其他资源都将被删除并由实现尽快回收。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多