我在我的 Android 应用程序中使用 native Activity 运行 GLES2。通话结束后,我返回我的应用程序,但屏幕仍然空白。我检查了任务管理器,发现该应用程序仍在运行。有人可以指点我吗 1) 我必须编写代码来保存和恢复我的游戏以及我必须在 java 中覆盖哪些调用才能执行此操作 2) 有一种更自动化的方式来恢复我的应用程序而无需保存/恢复
谢谢, 马丹
最佳答案
这可能是因为 Android 在将应用程序发送到后台后销毁了 OpenGL 上下文,并且默认情况下不会自动恢复它。
有两个选项可以解决此问题 - 如果您的目标是 Honeycomb 设备或更高版本,最简单的方法是在 GLSurfaceView
上使用 setPreserveEGLContextOnPause
(参见 here) .如果您的目标是较低的操作系统版本,则另一种方法是手动恢复所有内容。当上下文被销毁时,附加到它的所有东西也会被销毁——着色器、纹理、顶点和索引缓冲区。您需要在正确的时间重新创建这些 - 在 onSurfaceCreated
期间。引用安卓documentation了解更多详情。
更新 - 我的引擎为 pre-HoneyComb 设备实现的示例是 here .查看包含在 PIXELBOOST_GRAPHICS_HANDLE_CONTEXT_LOST
中的代码。调用上下文重新创建的绑定(bind)位于 example project 中。 .
关于android - 如何在电话结束后恢复我的 Android 游戏的原生 Activity (GLES 层)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12193743/