Android上のJavaを使用してopenGLES2ゲームを構築しています。
現在、2つのスレッドがあります。AndroidUIとopenGL。
私が理解している限り、最高のパフォーマンスを得るには、ゲームロジック用に別のスレッドが必要です。これにより、openGLスレッドが可能な限り高速にレンダリングできるようになります。
これで3が残ります。AndroidUI、openGL、およびゲームロジック。(それらをUI、OGL、およびGLと呼びましょう。)
私が間違っている場合は私を訂正してください:
UIが起動し、OGL、およびGLが作成されます。OGLとGLが実行され、UIに入力を照会します。GLは、描画呼び出しをOGLのキューに送信します。
ここには2つのケースがあります。GLがOGLよりもループに時間がかかる場合、最後のフレームの呼び出しの半分だけをレンダリングしないように、OGLの次のループはGLが終了するのを待ってから次のループを開始する必要があります。OGLがGLよりも時間がかかる場合、GLは、OGLが完了するまで待機して、再度開始するか、さらに描画呼び出しを送信する必要があります。
これを達成するには:
GLがループを完了すると、OGLをチェックして、描画呼び出しの現在のキューの描画が完了したかどうかを確認します。その場合、GLとOGLの次のループの両方を開始します。そうでない場合は、待機します。
OGLが実行されると、GLがチェックされます。GLが完了すると、両方のループが再開されます。そうでない場合は、GLを待機します。GLが完了すると、OGLがチェックされ、両方が再開されます。
これが少し紛らわしい言葉であるならば申し訳ありません。
私の考えを説明するために:
図http://img840.imageshack.us/img840/2816/stackoverflowthredpictu.jpg
私の質問を明確にするために:-このように物事をレイアウトすることは機能しますか?-そうでない場合、何がうまくいくでしょうか?
-これを達成するために、どのような特定の主題を調べる必要がありますか?--つまり、スレッドを作成したり、スレッド間で情報を送信したりする方法がわかりません。
ここで質問するのはこれが初めてです。正しく質問したことを願っています。:) ありがとう!