答えて

1

複数の「ストレージレイアウト」を1つのVAOに含めることはできません。これは同じ理由から、1つのテクスチャオブジェクトに複数のテクスチャを持つことはできません。 1つのバッファオブジェクト内の複数のバッファ。等々。

VAOs は、「格納レイアウト」です。したがって、複数のレイアウトが必要な場合は、1つ以上のVAOが必要です。

また、既存のVAOの状態を変更することもできます。彼らは不変ではありません。しかしそれはVAOの目的を破るものです。

+0

標準の頂点属性(位置と法線)を定義して有効にしてから、モデル行列(インスタンス化された配列を使用)に使用する_other_頂点属性を定義して有効にします。それから私はドローコールをします。 2番目の 'glVertexAttribPointer'でVAO状態を変更しましたが、レンダリング中に標準属性が見つかったままです。これはどのように可能ですか? – mak

+0

@mak: "*これはどのように可能ですか?*"わかりません。私はあなたのコードを見ていない。それがなければ、私ができることは、コードを記述することに基づいて推測することだけです。 –

+0

[OK]を、ここで 1.、私がやって何おおよそですVAO を生成し、バインド2 VBOを生成し、バインド 3.送信頂点データ(位置および正常)GPU 4. glVertexAttribPointerとglEnableVertexAttribArrayに位置し、通常の 5について。シェーダ で利用できるすべて11 glDrawArraysInstanced モデル行列の列の 8セットの制服 9 glVertexAttribPointer、glEnableVertexAttribArrayとglVertexAttribDivisorアップロードモデル行列6. 7.プログラムを別のVBO を生成し、バインドIない万一モデル行列の列でオーバーライドされた位置と標準を持っていますか? – mak

0

glVertexAttribPointerに与えた「説明」は、VAO状態で保存されます。

したがって、同じVBOでは、同じVAOの異なる属性で、または他のVAOで別々に設定することができます。

関連する問題