は、GLSurfaceView
ドキュメントは、この氏は述べています:アクティビティが一時停止されたときにAndroid:OpenGLコンテキストが破棄されるのはいつですか? Android上
A GLSurfaceViewを通知しなければならないと を再開しました。 GLSurfaceViewクライアントは、アクティビティが一時停止したときにonPause()を呼び出す必要があり、アクティビティが再開したときにonResume()を呼び出す必要があります。これらのコールで を呼び出すと、GLSurfaceViewはレンダリングスレッドを一時停止および再開できます。また、 は、GLSurfaceViewがOpenGLディスプレイを解放して再作成できるようにします。
だから私は、私の活動にこのような何かを行うことになってる:
public void onPause() {
myGlSurfaceView.onPause();
}
public void onResume() {
myGlSurfaceView.onResume();
}
私はonPause()
とonResume()
を呼び出さない場合は、コンテキストが失われていないというのが私のコードで観察していますホームボタンを押すと、アプリケーションを切り替えてからゲームに戻り、すべてが機能しています。私が見ているのは、バックボタンを使用してゲームを終了すると、再び開いたときに画面が黒くなりますが、バックボタンの動作を変更してゲームを完全に終了し、この問題を回避できることです。
私の質問は次のとおりです。OpenGLのコンテキストが破棄されたのはいつですか?私がonPause()
とonResume()
に電話しないと、決して破壊されないと思いますか?
EDIT:
私は、Android 2.2をターゲットにしていますので、setPreserveEGLContextOnPause()
は私にはオプションではありません。
:
は、同様の質問には、ここで私の答えを参照してください。これがtrueに設定されていると、コンテキストが保持されます。詳細については、http://developer.android.com/reference/android/opengl/GLSurfaceView.html#setPreserveEGLContextOnPause(boolean)をご覧ください。 –
@RodHyde申し訳ありませんが、私はAndroid 2.2をターゲットにしていると忘れていました。 – Damian
ここでは、描画にGLSurfaceを使用するコードがあります。 http://code.google.com/p/andengine/source/browse/src/org/anddev/andengine/opengl/view/GLSurfaceView.java?r=ef54dd94f1fe8fa9ed134d993802c3c9974d3a84 –