三角形の単純な配列を描画しようとしています。それらはすべて接続されているので、現在DrawArraysとGL_TRIANGLE_STRIPを使用しています。ただし、XCodeプロファイラーを確認するときは、代わりにDrawElementsとインデックス付き配列を使用することをお勧めします。
私は実際にこれを行うべきですか?DrawElementsにもTRIANGLE_STRIPのオプションがあることに気づきましたが、glDrawArraysを使用すると頂点が繰り返されないため、利点がわかりません。
ご覧のとおり、TRIANGLE_STRIPを使用しているため、繰り返しはありません。これにインデックスを付けることに利点はありますか?
Usually glDrawElements
is faster but and in your case (with only two rows of vertices) it won't affect performance and glDrawElements
could be even slower because you have also to handle the index buffer.
In some other cases where you have three or more rows of vertices you will start to have vertex repetitions and you should be using glDrawElements
and index your vertex buffer. The advantages of indexing are:
not only your 3D model is smaller and consumes less memory but it becomes faster to load it into the graphic card memory. So less memory means also less memory transfers.
シェーダーが複雑で操作が多すぎる場合、インデックス作成はパフォーマンスにプラスの影響を与える可能性があります。実際、頂点にインデックスを付ける場合、同じ頂点の結果を複数回再計算する必要はありません。結果は1回計算され、キャッシュされ、別のインデックスが同じ頂点を指しているときに再び使用されます。
変形可能なオブジェクトがある場合(つまり、物理的な衝突によって頂点の位置が変化する場合)、インデックス付けが役立ちます。インデックスを作成しなかったとすると、すべての三角形に対して同じ頂点(位置)を繰り返すことになります。したがって、衝突をシミュレートするために頂点の位置を変更する場合は、すべての三角形の頂点の位置を更新する必要があります。ただし、頂点バッファにインデックスを付ける場合は、頂点の位置を変更し、インデックスバッファを同じに保つだけで済みます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加