eglSwapBuffers失败:EGL_BAD_ALLOC AndEngine Android

时间:2012-02-15 12:19:12

标签: android opengl-es andengine

我在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)

有没有解决方案?

2 个答案:

答案 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 }}。如果你的代码处理重新创建表面,那么处理这个不起眼的情况应该是微不足道的。