Estoy haciendo algunas pruebas con OpenGL ES 2 y tengo algunas preguntas, mi programa actual es así:
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
El problema
El bloqueo de código dado, después de algunas investigaciones, he entendido por qué: necesito desvincular mi búfer de índice en la parte init (después de "llenar el búfer de índice glBufferData") o desvincularlo antes del primer "Bind VAO"
Mis preguntas son:
- ¿Puedo poner mi buffer de índice en VAO (VAO stock index buffer?)?
- ¿Tenía que desvincular buffers después de cada actualización (glBufferData)?
En mi aplicación, tengo algunos buffers que se actualizan en cada cuadro (Ejemplo: Partículas), así que tengo una pila de OpenGL como esta:
-> bind buffer 1
-> update buffer 1
-> close buffer 1
-> bind buffer 1
-> draw
Las primeras 3 líneas actualizan el búfer Vertex, los dos últimos objetos de dibujo, que deberían ser algo así:
-> bind buffer 1
-> update buffer 1
-> draw
Gracias
fuente