OpenGL ES 1.xで頂点バッファーオブジェクトを使用するときに、インデックス付きプリミティブを使用できますか?
質問
頂点バッファーオブジェクトを使用してGPUにコピーする頂点のリストを含む配列があります。ただし、頂点配列へのインデックスのリストを含む整数配列もあるため、頂点座標自体は無意味です。
このシナリオでは、インデックスを保存するために別のバッファオブジェクトを作成し、レンダリング関数で描画のために頂点配列とインデックス配列の両方をバインドすることができます。
//vertex coordinates
glBindBuffer(GL_ARRAY_BUFFER, bufferId1);
//index coordinates
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bufferId2);
glVertexPointer(3, GL_FLOAT, 0, 0);
//Not sure if this should be Unsigned BYTE or Unsigned SHORT
glDrawElements(GL_POINTS, 6, GL_UNSIGNED_BYTE, 0);
APIを読みましたが、次の点で混乱しました。
"ゼロ以外のバッファオブジェクトはGL_ELEMENT_ARRAY_BUFFERターゲットにバインドされますが、クライアント側メモリへのポインタとして従来解釈されていたglDrawElementsのインデックスパラメータは、代わりに基本マシンで測定されたバッファオブジェクト内のオフセットとして解釈されます単位。"
グラフィックプログラミングは初めてなので、これが意味をなさない場合は謝罪します。
解決
はい、これは可能です。 公式チュートリアルが役立ちます。符号なしバイトの使用はお勧めしません。速度を上げるために16ビットまたは32ビットのインデックスを使用してください。
所属していません StackOverflow