我在游戏中偶尔会遇到此错误:
STACK_TRACE := java.lang.RuntimeException: eglSwapBuffers failed: EGL_BAD_ALLOC
at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1079)
at android.opengl.GLSurfaceView$EglHelper.swap(GLSurfaceView.java:1037)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1342)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)
现在,我已经读过有关这个问题的其他实例是由于没有在GLSurfaceView上调用onPause和onResume引起的,但我们是。
BUT!我们的游戏工作方式有几个活动,其中大部分是弹出窗口。我们不希望渲染器在这些实例中暂停,因为我们希望绘图继续在菜单后面。
因此我们在封闭活动的onStop方法中调用onPause,在活动的onStart / onRestart方法中调用onResume。
post on Google提到了onPause / onResume问题以及“防止GLThread在生病时被执行的代码”。还有其他我需要做的事吗?
(我不是在绘制未绑定的纹理,但是除此之外,这是在帧的开头发生的,不是吗?它不是绘图,而是交换缓冲区以绘制已缓冲的内容并进行设置为下一帧增加一个空白区域,不是吗?)
我非常感谢任何见解。