我们的游戏要求从小图像动态构建几个大纹理,并且我们不保留纹理的数据副本,我们只是使用 OpenGLglTexSubImage2d
来更新实际纹理。
当按下 Back 或游戏失去焦点时,我们希望将这些纹理保存到 ram,因此如果用户随后返回游戏,我们可以在onSurfaceCreated
. 我们已经从“磁盘”重新加载所有静态纹理。
然而,事实证明很难找到我们可以从哪里得到消息以知道我们即将失去 EGL 上下文。如果我们在主活动中设置一个标志,onBackPressed
然后在主渲染循环中检查该标志,我们可以将纹理保存在那里,但我们不能从主活动中访问纹理,所以将调用放在主活动的onStop
回调中也是如此晚的。没有后续的渲染循环来保存纹理,因为到那时它已经停止了。我们需要这样做,因为onStop
除了按下后退按钮之外,还有其他调用方式。
据说我不能拖延onStop
再获得一个“渲染”。还有其他想法吗?