在Android上管理OpenGL资源

时间:2011-07-15 09:51:07

标签: android opengl-es resources

我有一个基本的Activity类,它创建一个GLSurfaceView,并在其SetRenderer方法中传递一个派生自Renderer的类。现在我知道当手机或平板电脑进入休眠状态时(目前为止,DirectX 9),OpenGL资源可能会丢失,并且当手机从睡眠状态返回时,必须重新创建这些资源。

我是否正确地认为我的所有其他课程,活动等都会像唤醒时那样完全恢复?即我只需要在onSurfaceCreated方法中重新绑定纹理,着色器,GL状态等内容。我不需要重新创建视图或渲染器对象。

onSurfaceCreated方法是在手机唤醒时调用,还是在启动时调用一次?我在onSurfaceCreated中收到的GL对象是否已被破坏(即存储它并通过睡眠/唤醒循环使用它是否安全)?

1 个答案:

答案 0 :(得分:3)

  

我是否正确地认为我的所有其他课程,活动等都会像唤醒时那样完全恢复?

这取决于这些“唤醒”之间的活动是否被杀死。如果活动在这些暂停之间没有被杀死,那么您班级的所有内容都将恢复为您离开活动时的状态。

  

我只需要在onSurfaceCreated方法中重新绑定纹理,着色器,GL状态等内容。我不需要重新创建视图或渲染器对象。

正确。

  

手机唤醒时是否会调用onSurfaceCreated方法,或者只是在启动时调用一次?

每次创建新曲面时都会调用它,这意味着每次应用程序从背景变为前景时都会被调用。