我在And引擎中开发了一个引发异常的游戏。实际上我不知道异常发生的地方。它在市场上报道很多次。
java.lang.RuntimeException: eglSwapBuffers failed: EGL_BAD_ALLOC
at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1080)
at android.opengl.GLSurfaceView$EglHelper.swap(GLSurfaceView.java:1038)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1364)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)
有没有解决方案?
答案 0 :(得分:2)
当您未通知GLSurfaceView有关您的活动的状态转换时,可能会发生此错误。 请参阅以下段落:http://developer.android.com/reference/android/opengl/GLSurfaceView.html
活动生命周期
当活动暂停时,必须通知GLSurfaceView 恢复。 GLSurfaceView客户端需要在调用onPause()时调用 活动恢复时,活动暂停和onResume()。这些电话 允许GLSurfaceView暂停和恢复渲染线程,以及 允许GLSurfaceView释放并重新创建OpenGL显示。
我不知道andengine是如何处理这个的。
答案 1 :(得分:1)
根据我的经验(特定于我的三星Note,而且到目前为止我没有测试过其他任何Android设备),EGL_BAD_ALLOC
而不是eglSwapBuffers()
会错误地生成EGL_BAD_CURRENT_SURFACE
}}。如果你的代码处理重新创建表面,那么处理这个不起眼的情况应该是微不足道的。