2

我在我们的游戏中偶尔会遇到这个错误:

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 引起的,但我们确实如此。

但!我们的游戏工作方式有几个活动,其中大部分是弹出窗口。我们不希望渲染器在这些情况下暂停,因为我们希望绘图在菜单后面继续。

因此,我们在封闭活动的 onStop 方法中调用 onPause,在活动的 onStart/onRestart 方法中调用 onResume。

Google 上的一篇文章提到了 onPause/onResume 问题以及“防止 GLThread 在生病时执行的代码”。还有什么我需要做的吗?

(我不是在绘制未绑定的纹理,但除此之外,这发生在帧的开头,不是吗?这不是绘制,而是交换缓冲区以绘制已缓冲的内容并设置空白下一帧的空间,不是吗?)

我将不胜感激任何见解。

4

0 回答 0