VAOがバッファマッピングをどのように正確に処理しているかを理解するのに苦労しています。私がしていることは、この擬似コードで説明できます。
SetUp:
BindVAO
BindArrayBuffer
glBufferData(GL_ARRAY_BUFFER, ExpectedMaxCount, NULL, GL_DYNAMIC_DRAW);//Allocate storage
glEnableVertexAttribArray
glVertexAttribPointer
BindElementBuffer
Allocate storage (no data yet)
UnbindVAO
UnbindArrayBuffer
UnbindElementBuffer
Draw:
SubArrayAndElementDataIfNeeded
BindVAO
DrawElements
これは、DrawElementsが呼び出されたときに、OpenGLがバインドされたVAOを使用して配列と要素のバッファーバインディングを解決するということは正しいですか?Draw呼び出しの後、バインドされた配列バッファーは0ですが、要素バッファーは引き続きDrawに使用されたものです。
VAOのセットアップ中にバッファメモリを割り当てることは必須ですか?セットアップ後にBufferDataが呼び出された場合、VAOは無効になりますか?