Ich mache einige Tests mit OpenGL ES 2 und habe einige Fragen, mein aktuelles Programm sieht so aus:
Init
-------
-> create index buffer
-> fill index buffer glBufferData …
-> create vertex buffer
-> fill vertex buffer glBufferData …
Draw
-------
1. Apply vertex buffer
-> Bind VAO
-> bind vertex buffer
- enable attributs (glVertexPointer, …)
-> unbind vertex buffer
-> Unbind VAO
-> Bind VAO
3. Apply index buffer
4. Draw
Das Problem
Nach einigen Nachforschungen habe ich nach dem angegebenen Codeabbruch verstanden, warum: Ich muss meinen Indexpuffer im Init-Teil (nach "fill index buffer glBufferData") oder vor dem ersten "Bind VAO" entbinden.
Meine Fragen sind:
- Kann ich meinen Indexpuffer in VAO (VAO Stock Index Buffer?) Ablegen?
- Musste ich nach jedem Update die Pufferbindung aufheben (glBufferData)?
In meiner Anwendung habe ich einige Puffer, die auf jedem Frame aktualisiert werden (Beispiel: Partikel), sodass ich einen OpenGL-Stapel wie diesen habe:
-> bind buffer 1
-> update buffer 1
-> close buffer 1
-> bind buffer 1
-> draw
Die ersten drei Zeilen aktualisieren den Vertex-Puffer, die beiden letzten Zeichenobjekte, die ungefähr so aussehen sollten:
-> bind buffer 1
-> update buffer 1
-> draw
Vielen Dank
quelle