gpt4 book ai didi

android - 在 Android 上丢失上下文时如何保存 OpenGL 纹理

转载 作者:太空狗 更新时间:2023-10-29 14:15:54 26 4
gpt4 key购买 nike

我们的游戏需要从小图像动态构建几个大纹理,我们不保留纹理的数据副本,我们只是使用 OpenGL 和 glTexSubImage2d 来更新实际纹理。

当按下返回键或游戏失去焦点时,我们希望将这些纹理保存到内存中,这样如果用户随后返回游戏,我们可以在 onSurfaceCreated 中重新创建/重新加载它们。我们已经从“磁盘”重新加载所有静态纹理。

然而,事实证明很难找到我们可以从何处获得消息以了解我们即将失去 EGL 上下文。如果我们在主 Activity 的 onBackPressed 中设置一个标志,然后在主渲染循环中检查该标志,我们可以将纹理保存在那里,但我们无法从主 Activity 访问纹理,因此将在主 Activity 的 onStop 回调中调用为时已晚。没有后续的渲染循环来保存纹理,因为到那时它已经停止了。我们需要这样做,因为除了按下“后退”按钮之外,还有其他方法可以调用 onStop

据推测,我不能延迟 onStop 以在其中任何一个中再进行一次“渲染”。还有其他想法吗?

最佳答案

由于您已经在应用程序冷启动期间动态生成了此纹理,因此最好将此纹理dirty 分开并重新生成它们,就好像您的应用程序正在冷启动一样。

如果您想保存这些纹理,则不要等待 onStop() 被调用。生成它们的内容后,只需保存它们。

关于android - 在 Android 上丢失上下文时如何保存 OpenGL 纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22192328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com