OpenGL ES:TRIANGLE_STRIP配列にDrawElementsを使用する必要がありますか?

ミステリーパンケーキ

三角形の単純な配列を描画しようとしています。それらはすべて接続されているので、現在DrawArraysとGL_TRIANGLE_STRIPを使用しています。ただし、XCodeプロファイラーを確認するときは、代わりにDrawElementsとインデックス付き配列を使用することをお勧めします。

私は実際にこれを行うべきですか?DrawElementsにもTRIANGLE_STRIPのオプションがあることに気づきましたが、glDrawArraysを使用すると頂点が繰り返されないため、利点がわかりません。

これが私が描いている三角形の図です: ここに画像の説明を入力してください

ご覧のとおり、TRIANGLE_STRIPを使用しているため、繰り返しはありません。これにインデックスを付けることに利点はありますか?

ELKA

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]

編集
0

コメントを追加

0

関連記事

分類Dev

OpenGLの頂点バッチ処理に最大制限のある配列またはArrayListを使用する必要がありますか?

分類Dev

OpenGL-es頂点にはどのデータ型を使用する必要がありますか?

分類Dev

VAOとVBOを構成する場合、頂点データ配列を同じ方法にする必要がありますか?(OpenGL)

分類Dev

OpenGL 4.5でキューブマップ配列をどのように初期化する必要がありますか?

分類Dev

OpenGLを使用するXamarin(.Forms)でどのフレームワークを使用する必要がありますか?

分類Dev

どのOpenGLライブラリを使用する必要がありますか?その理由は何ですか?

分類Dev

OpenGLゲームはiPhone6plusのUIScreennativeBoundsまたはboundsを使用する必要がありますか?

分類Dev

OpenGL互換性仕様のどこで、頂点属性配列ゼロを有効にする必要があると書かれていますか?

分類Dev

glVertexAttribPointer()がOpenGLの属性値で最後に配列になる可能性はありますか?

分類Dev

openGLでは、モデル座標はCPUまたはOpenGL呼び出しを使用するGPUで計算する必要がありますか?

分類Dev

三角形分割を描画するには、どのOpenGLプリミティブを使用する必要がありますか?

分類Dev

OpenGL:頂点のZ座標は負である必要がありますか?

分類Dev

OpenGLで画像を表示するのに問題があります

分類Dev

OpenGLなしでQtWebEngineを使用する方法はありますか?

分類Dev

Draw a triangle with OpenGL

分類Dev

OpenGL triangle is always white

分類Dev

OpenGL: Cannot not render a triangle

分類Dev

OpenGL ES 2でglDeleteBuffers、glDeleteShader、およびglDeleteProgramを使用する必要があるのはいつですか。

分類Dev

Androidでopengl削除機能を実行する必要はありませんか?

分類Dev

Opengl Mesa:opengl4.0を使用する

分類Dev

Opengl Mesa:opengl4.0を使用する

分類Dev

Maya 2017でOpenGLコンテキストを定義する必要がありますか?

分類Dev

OpenGL 1.0を学ぶ必要がありますか、それともOpenGL 3/4にスキップできますか?

分類Dev

OpenGL ES(Android)のテクスチャーでインデックスバッファーを使用することに意味がありますか?

分類Dev

Android Surfaceflinger and openGL ES

分類Dev

OpenGL ES 2.0 setLookAtM

分類Dev

Drawing A Square in OpenGL ES

分類Dev

OpenGLコンテキスト間でリソースを同期するときにglFinishを呼び出す必要がありますか?

分類Dev

OpenGL ESで三角関数をキャッシュすることは意味がありますか?

Related 関連記事

  1. 1

    OpenGLの頂点バッチ処理に最大制限のある配列またはArrayListを使用する必要がありますか?

  2. 2

    OpenGL-es頂点にはどのデータ型を使用する必要がありますか?

  3. 3

    VAOとVBOを構成する場合、頂点データ配列を同じ方法にする必要がありますか?(OpenGL)

  4. 4

    OpenGL 4.5でキューブマップ配列をどのように初期化する必要がありますか?

  5. 5

    OpenGLを使用するXamarin(.Forms)でどのフレームワークを使用する必要がありますか?

  6. 6

    どのOpenGLライブラリを使用する必要がありますか?その理由は何ですか?

  7. 7

    OpenGLゲームはiPhone6plusのUIScreennativeBoundsまたはboundsを使用する必要がありますか?

  8. 8

    OpenGL互換性仕様のどこで、頂点属性配列ゼロを有効にする必要があると書かれていますか?

  9. 9

    glVertexAttribPointer()がOpenGLの属性値で最後に配列になる可能性はありますか?

  10. 10

    openGLでは、モデル座標はCPUまたはOpenGL呼び出しを使用するGPUで計算する必要がありますか?

  11. 11

    三角形分割を描画するには、どのOpenGLプリミティブを使用する必要がありますか?

  12. 12

    OpenGL:頂点のZ座標は負である必要がありますか?

  13. 13

    OpenGLで画像を表示するのに問題があります

  14. 14

    OpenGLなしでQtWebEngineを使用する方法はありますか?

  15. 15

    Draw a triangle with OpenGL

  16. 16

    OpenGL triangle is always white

  17. 17

    OpenGL: Cannot not render a triangle

  18. 18

    OpenGL ES 2でglDeleteBuffers、glDeleteShader、およびglDeleteProgramを使用する必要があるのはいつですか。

  19. 19

    Androidでopengl削除機能を実行する必要はありませんか?

  20. 20

    Opengl Mesa:opengl4.0を使用する

  21. 21

    Opengl Mesa:opengl4.0を使用する

  22. 22

    Maya 2017でOpenGLコンテキストを定義する必要がありますか?

  23. 23

    OpenGL 1.0を学ぶ必要がありますか、それともOpenGL 3/4にスキップできますか?

  24. 24

    OpenGL ES(Android)のテクスチャーでインデックスバッファーを使用することに意味がありますか?

  25. 25

    Android Surfaceflinger and openGL ES

  26. 26

    OpenGL ES 2.0 setLookAtM

  27. 27

    Drawing A Square in OpenGL ES

  28. 28

    OpenGLコンテキスト間でリソースを同期するときにglFinishを呼び出す必要がありますか?

  29. 29

    OpenGL ESで三角関数をキャッシュすることは意味がありますか?

ホットタグ

アーカイブ