以下は、ライブラリlibGDXのゲームループを理解したときの処理時間を示すUMLシーケンス図です。他のすべてのゲームライブラリと同じアーキテクチャでなければならないと思います。私が正しく理解しているかどうかはわかりません。 理論的には、CPUとGPUは並行して動作します。 CPUがバッファ変更のためにGPUが終了するまでCPUが待機すると、これはシリアル・プロセスになります。 ゲームループを並行して動作させるにはどうすればよいですか、それとも私の理解が間違っていますか?レンダリングループ - 最大並列化
これで、GPUがCPUよりも遅くなり、GPUがレンダリングされている間にCPUが次のフレームで処理を続行するようにしました。 GPUが終了するのを待っている2番目のスレッドがあります。 GPUが完了すると、次の画像が計算されます。 OpenGLの状態が変わり、描画コマンドはどこに行きますか? GPUは現在忙しいです。これは、私が何かを欠いているという結論につながります。
EDIT:ロス・ヴァンダーによって推奨
:私はあなたが間違っているところであってもよい第2の図で見る
2番目の図で、レンダリング呼び出しが「CPUスレッド1」ではなく「CPUスレッド2」に戻るのはなぜですか? –
CPUがフロントバッファとバックバッファをスワップする必要があるためです。スレッド1が次のフレームをレンダリングしているので、スレッド2はバッファを変更するのを待ちます。 –
申し訳ありませんが、UML図が何を伝えようとしているのかはわかりません。ダイアグラム内の「スレッド」は「制御スレッド」ですか、それとも別のスレッドですか? 2つのポインタ(またはLibGDXがJavaであるので参照)を入れ替えても、GPUでブロックされたコントロールのスレッドは変更されません。何か不足していますか? –