openglVAOの使用


前書き

Vertex Array Objectは、OpenGLが一連のVBOを解釈する方法を格納します。

本質的には、新しいメッシュをレンダリングするたびにglVertexAttribPointerを呼び出さないようにします。

VAOを扱いたくない場合は、プログラムの初期化中にVAOを作成してバインドし、存在しないふりをするだけです。

構文

  • void glEnableVertexAttribArray(GLuint attribIndex);

  • void glDisableVertexAttribArray(GLuint attribIndex);

  • void glVertexAttribPointer(GLuint attribIndex、GLintサイズ、GLnum型、GLboolean正規化、GLsizei stride、const GLvoid *ポインタ);

  • void glVertexAttribFormat(GLuint attribIndex、GLintサイズ、GLenumタイプ、GLboolean正規化、GLuint相対オフセット)。

  • void glVertexAttribBinding(GLuint attribIndex、GLuint bindingIndex);

  • void glBindVertexBuffer(GLuint bindingIndex、GLuintバッファ、GLintptrオフセット、GLintptrストライド);

パラメーター

パラメータ詳細
attribIndex 頂点配列がデータを供給する頂点属性の場所
サイズ属性から引き出されるコンポーネントの数
タイプバッファ内の属性データのC ++型
正規化された浮動小数点範囲[0、1](符号なしの場合)または[-1、1](符号付きの場合)に整数型をマップするかどうか。
ポインタ属性データの最初のバイトまでのバッファへのバイトオフセット(従来の理由からvoid*にキャスト)
オフセットバッファの先頭から配列データの開始位置までの基本バイトオフセット
relativeOffset バッファの基本オフセットに対する特定の属性へのオフセット
ストライド 1頂点のデータから次の頂点のデータまでのバイト数
バッファ頂点配列が格納されているバッファオブジェクト
bindingIndex ソースバッファオブジェクトがバインドされるインデックス

備考

別個のアトリビュートフォーマットVAOセットアップは、 glVertexAttribPointer相互運用できます(後者は前者の定義で定義されています)。しかしそうするときには注意が必要です。

別の属性フォーマットバージョンは、4.5の同等の直接的なアクセス(DSA)を持っています。これらは同じパラメータを持ちますが、バインドされたVAOを使用する代わりに、変更されるVAOは明示的に渡されます。 glDrawElements DSAインデックスバッファを使用する場合、 glVertexArrayElementBuffer(vao, ebo);で設定できますglVertexArrayElementBuffer(vao, ebo);

VAOの使用 関連する例