2

「ばね-質量」のようなシステムの3D物理シミュレーションで、球の素晴らしいコレクションを描画する必要があります。

シミュレーションのすべてのステップで表示リストをコンパイルせずに球を描画する効率的な方法を知りたいです(各ステップは、計算に関係するボディの数に応じて、ミリ秒から秒まで変化する可能性があります)。

頂点バッファオブジェクトは、時々更新する必要があるオブジェクトを描画するための効率的な方法であることを読みました。

glutSolidSphereよりも速い方法でOpenGL球を描画する方法はありますか?

4

2 に答える 2

2

シミュレーションのすべてのステップで表示リストをコンパイルせずに球を描画する効率的な方法を知りたいです(各ステップは、計算に関係するボディの数に応じて、ミリ秒から秒まで変化する可能性があります)。

入力するジオメトリが動的である場合、なぜディスプレイリストを生成するのですか。ディスプレイリストは、変更されない、またはほとんど変更されない静的ジオメトリを対象としています。

頂点バッファオブジェクトは、時々更新する必要があるオブジェクトを描画するための効率的な方法であることを読みました。

実際、VBOは静的ジオメトリでも最も効率的です。一般に、実際のジオメトリの更新回数をできるだけ少なくする必要があります。あなたの場合、更新するのは球の位置(そしておそらくサイズ)だけです。これは、インスタンス化された描画の代表的な例です。ただし、これもうまく機能し、ユニフォームまたは変換行列のみを更新して、球を描画する呼び出しを実行します。

頂点配列とVBOの考え方は、1回の呼び出しでジオメトリのバッチ全体を描画することです。球はそのようなバッチになります。

于 2012-05-24T08:23:26.770 に答える
2

球は自己相似です。すべての球は、他の球のスケーリングされたバージョンにすぎません。ジオメトリを再生成する必要はないと思います。確かに、私はまったく複数の球を持つ必要はないと思います。

それは単に適切なスケーリングマトリックスを提供することの問題です。ディスプレイリストまたはバッファオブジェクトメッシュの原点を中心とする半径1の球をお勧めします。次に、スケールを使用して新しい半径を設定し、それを別の場所に変換することができます。

于 2012-05-24T13:34:43.160 に答える