1. ホーム
  2. opengl

[解決済み] OpenGL - なぜ、インデックスのためのGL_ELEMENT_ARRAY_BUFFERなのですか?

2022-01-30 18:16:55

質問

私は現在OpenGL ES 2.0の領域では初心者で、バインディング、バッファ、シェーダーなどに関してできる限り理解したいと思っています。

今現在、私はちょうど GL_ELEMENT_ARRAY_BUFFERGL_ARRAY_BUFFER と、それぞれのプリセットを使用するタイミングについて説明します。

私の現在の理解では、以下のように考えています。 GL_ELEMENT_ARRAY_BUFFER は、特に当該三角形のインデックス用で、もう一つはそれ以外のもの用です。

どなたか、その理由と正しいかどうかを詳しく教えてください。どのように GL_ELEMENT_ARRAY_BUFFER の扱いが違うのでしょうか?

どのように解決するのですか?

GL_ELEMENT_ARRAY_BUFFER は、提示するバッファが "other"の各要素のインデックスを含んでいることを示すために使用されます ( GL_ARRAY_BUFFER ) バッファを作成します。

そこで、頂点のみ(他のデータはない)の非常に基本的な例として、インデックス・バッファがある場合。

{0, 1, 2} {0, 2, 3}

で、データバッファには

{{0, 0, 0}, {1, 0, 0}, {1, 1, 0}, {0, 1, 0}}

そして、glDrawElements を呼び出すと、最初の三角形の頂点 0, 1 & 2 と、2 番目の三角形の頂点 0, 2, 3 を選び出すことがわかります(つまり、基本的には正方形です)。

これは、頂点や面の数が多い複雑なモデルの場合、多くの面が同じ頂点を共有するため、より便利になります(したがって、同じデータを再送信する必要はありません)。

注意 上記の例では、頂点のみを表示しています。この中に好きなだけデータを挿入することができます(頂点の色、法線、テクスチャ座標...等)。