大量のパーティクルをレンダリングする必要があります。これらのパーティクルは、テクスチャのない単純な四角形(実際には正方形)です。ああ、そして彼らは粒子なので、彼らはいつも動いています。
私は2つのオプションを検討しましたが、私はOpenGLの専門家ではないため、何が最善かわかりません。
VBOを使用してそれらすべてをレンダリングします。
長所:即時モードよりも高速です。
短所:(VBOについてはよくわかりませんが)収集したものから、クワッドの座標をRAMのバッファに保存する必要があります...そして、これらの座標はすべてCPUによって計算される必要があります。したがって、粒子P1(x、y)の場合、他の4つの座標(P2(x-1、y-1)、P3(x-1、y + 1)、P4(x + 1、y + 1))を計算する必要があります。 、P5(x + 1、y-1))-これはCPUにとって大変な作業です。ディスプレイリストを使用する:最初に、単一の正方形のクワッドの小さなディスプレイリストを作成します。次に、各パーティクルをレンダリングするには、いくつかの操作を行います
pushMatrix, glTranslate, callList, popMatrix
。
長所:4つの座標を手動で計算する必要はありません-glTranlateがそれを行います。
おそらく、ディスプレイリストはVBOよりも高速です。
短所:クワッドが1つしかない場合、VBOよりも高速ですか?
注意:私はJavaからOpenGLのものを呼び出しているので、Java配列をGPU配列に変換するスムーズな方法はありません(転送前にすべてを中間のFloatBuffersに格納する必要があります)。