我有一个基本的Activity类,它创建了一个渲染器,并在其SetRenderer方法中传递了一个从GLSurfaceView派生的类。现在我意识到,当手机或平板电脑进入睡眠状态时(到目前为止,DirectX 9也是如此),OpenGL资源可能会丢失,当手机从睡眠状态返回时,必须重新创建这些资源。
我认为我的所有其他类、活动等都完全恢复为唤醒时的状态,这样想对吗?也就是说,我只需要在onSurfaceCreated方法中重新绑定纹理、着色器、GL状态等内容。我不需要重新创建视图或渲染器对象。
onSurfaceCreated方法是在电话唤醒时调用,还是只在启动时调用一次?我在onSurfaceCreated中收到的GL对象是否已被销毁(即在休眠/唤醒周期中存储和使用它是否安全)?
发布于 2011-07-15 10:03:52
我是否正确地认为我的所有其他类、活动等都完全恢复为唤醒时的状态?
这取决于活动是否在这些“唤醒”之间被扼杀。如果在这两次暂停之间没有终止活动,则所有类都会恢复为离开活动时的状态。
我只需要在onSurfaceCreated方法中重新绑定纹理,着色器,GL状态等等。我不需要重新创建视图或渲染器对象。
对,是这样。
onSurfaceCreated方法是在手机唤醒时调用,还是只在启动时调用一次?
每当创建一个新的表面时,它都会被调用,这意味着每次你的应用程序从后台进入前台。
https://stackoverflow.com/questions/6705297
复制相似问题