ちょうど(私は、チャットSOに尋ねると思いますが、それはそこで死んだ!)私はこれを正しく理解しておくようにしたい:glVertexAttribPointerは明確
我々は、我々がすることによって、「現在」にする頂点配列を、持っていますそれを結合
その後、我々は
は、その後、我々は、本質的にその標的に結合したものは何でも移入ターゲットを経由してglBufferData
は、私たちのバッファ
すなわちことを記入し、標的に結合し、その後、我々は説明しglVertexAttribPointer
を呼び出すバッファを、持っていますデータがどのようにレイアウトされているか - データはバインドされているものであればGL_ARRAY_BUFFER
とt彼の記述子は元の頂点配列に保存されます
(1)私の理解は正しいですか?
documentationは、すべてがどのように相関しているか少し不安です。
(2)デフォルトのVertex Arrayはありますか?私はglGenVertexArrays
とglBindVertexArray
を忘れてしまったので、私のプログラムは問題なく動作しました。
編集:私はステップ... glEnableVertexAttribArray
を逃しました。
(3)頂点Attribには時間glVertexAttribPointer
で頂点配列に結合されているが呼び出され、その後、我々は頂点配列が現在バインドされているにかかわらず、そのうちの任意の時点でglEnableVertexAttribArray
を経由してそのATTRIBを有効/無効にすることができますか?
または(3b)の頂点Attribには時間glEnableVertexAttribArray
で頂点配列に結合されているが、異なる頂点配列が結合しているとき、呼ばれ、したがって、我々は、異なる時間にglEnableVertexAttribArray
を呼び出すことによって、複数の頂点配列に同じ頂点Attribにを追加することができます?
「頂点バッファオブジェクトまたはVBO(時には単なるバッファオブジェクトとも呼ばれる)」実際に呼び出されるのは「時々」と呼ばれることがあります。これは単なるバッファオブジェクトであり、均一ブロック、ピクセル転送、トランスフォームフィードバック、またはその他の用途に使用できる他のバッファオブジェクトとは異なります。 OpenGL spec * never *は、「頂点バッファオブジェクト」として何も参照しません。 [元の拡張仕様](http://www.opengl.org/registry/specs/ARB/vertex_buffer_object.txt)でさえもそれを呼び出すことはありません。 –
適切な名前付けに合わせて編集しました。ありがとうございます。 –
優れた答え。これを書き留める時間をとってくれてありがとう!しかし、(1)レンダリングする前に、属性を定義する前に、glEnableVertexAttribArray(0)で有効にする必要があります。 glVertexAttribPointer'?私のテストでは、注文は問題にはならない。 (2)私があなたを正しく理解している場合、Vertex Attributesはグローバルで、有効/無効状態のみが現在バインドされているVAOに保存されますか? – mpen