私のアプリケーションでは、OpenGLESApiを介して多くのキューブを描画します。すべての立方体は同じ寸法ですが、空間内の異なる座標に配置されているだけです。それらを描く方法は2つ考えられますが、どちらが最も効率的かはわかりません。私はOpenGLの専門家ではないので、ここで質問することにしました。
現在使用している方法1:すべての立方体が同じ次元であるため、頂点バッファー、インデックスバッファー、通常バッファー、およびカラーバッファーを1回だけ計算します。シーンの更新中に、すべての立方体を調べ、同じバッファーのセットに対してbufferData()を実行してから、drawElements()呼び出しを使用して立方体の三角形メッシュを描画します。各立方体は異なる位置にあるため、描画する前にmvMatrixを変換します。bufferData()およびdrawElements()は、キューブごとに実行されます。この方法では、毎回バッファを計算しないことで、おそらく多くのメモリを節約できます。しかし、私はたくさんのdrawElements()呼び出しを行っています。
方法2は次のようになります。すべての立方体を、ポリゴンのセットがシーン全体に広がるように扱います。各ポリゴン(実際にはポリゴン内の三角形)の頂点、インデックス、色、通常のバッファを計算し、bufferData()を1回呼び出すだけでそれらをグラフィックカードメモリにプッシュします。次に、drawElements()を1回呼び出すだけでそれらを描画します。このアプローチの利点は、bindBufferとdrawElementsの呼び出しを1回だけ実行することです。欠点は、バッファを作成するために多くのメモリを使用することです。
私のOpenGLの経験は十分に限られており、パフォーマンスの観点から上記の方法のどれが優れているかわかりません。
これをWebGLアプリで使用していますが、これは一般的なOpenGLESの質問です。