4

Androidアプリでネイティブアクティビティを使用してGLES2を実行しています。通話が終了するとアプリに戻りますが、画面が空白のままです。タスクマネージャーを確認すると、アプリがまだ実行されていることがわかります。1)ゲームを保存および復元するためのコードを記述しなければならず、これを行うためにJavaでオーバーライドする必要がある呼び出しがあります。2)保存/復元せずにアプリを復元するより自動化された方法があります。

ありがとう、マダン

4

1 に答える 1

4

これは、Androidがバックグラウンドに送信したアプリケーションの後にOpenGLコンテキストを破棄し、デフォルトでは自動的に復元しないという事実が原因である可能性があります。

これを解決するには2つのオプションがあります。Honeycombデバイス以上をターゲットにしている場合、最も簡単なのはで使用することですsetPreserveEGLContextOnPauseGLSurfaceViewここを参照。別の方法として、OSのバージョンが低い場合は、すべてを手動で復元します。コンテキストが破棄されると、それに接続されているすべてのもの(シェーダー、テクスチャ、頂点、インデックスバッファー)も破棄されます。これらを正しい時間に再作成する必要があります-の間にonSurfaceCreated。詳細については、Androidのドキュメントを参照してください。

更新-HoneyComb以前のデバイス用の私のエンジンからの実装例はここにあります。でラップされたコードを参照してくださいPIXELBOOST_GRAPHICS_HANDLE_CONTEXT_LOST。コンテキストの再作成を呼び出すためのバインディングは、サンプルプロジェクトにあります。

于 2012-08-30T12:21:49.663 に答える