我在我的 android 应用程序中使用本机活动运行 GLES2。通话结束时,我返回我的应用程序,但屏幕保持空白。我检查了任务管理器,发现应用程序仍在运行。有人可以指出我是否 1)我必须编写代码来保存和恢复我的游戏,并且我必须在 java 中覆盖哪些调用才能做到这一点 2)有一种更自动化的方式来恢复我的应用程序而无需保存/恢复
谢谢,马丹
我在我的 android 应用程序中使用本机活动运行 GLES2。通话结束时,我返回我的应用程序,但屏幕保持空白。我检查了任务管理器,发现应用程序仍在运行。有人可以指出我是否 1)我必须编写代码来保存和恢复我的游戏,并且我必须在 java 中覆盖哪些调用才能做到这一点 2)有一种更自动化的方式来恢复我的应用程序而无需保存/恢复
谢谢,马丹
这可能是由于 Android 在将应用程序发送到后台后破坏了 OpenGL 上下文,并且默认情况下不会自动恢复它。
有两个选项可以解决这个问题 - 如果您的目标是 Honeycomb 设备或更高版本,最简单的方法是setPreserveEGLContextOnPause
在您的GLSurfaceView
(请参阅此处)上使用。如果您的目标是较低的操作系统版本,另一种选择是手动恢复所有内容。当上下文被销毁时,所有附加到它的东西 - 着色器、纹理、顶点和索引缓冲区。您需要在正确的时间重新创建这些 - 在onSurfaceCreated
. 有关详细信息,请参阅 Android文档。
更新 - 我的引擎中用于 pre-HoneyComb 设备的示例实现在这里。查看包含在PIXELBOOST_GRAPHICS_HANDLE_CONTEXT_LOST
. 调用上下文重新创建的绑定位于示例项目中。