ゲームで時々このエラーが発生します。
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 が不適切な時間に実行されるのを防ぐコード」の両方について言及しています。私がしなければならないことは他にありますか?
(バインドされていないテクスチャを描いているわけではありませんが、それはさておき、これはフレームの開始時に発生していますね。描画ではなく、バッファをスワップしてバッファリングされたものを描画し、空白を設定します次のフレームのためのスペースですね。)
洞察をいただければ幸いです。