Estou fazendo alguns testes com o OpenGL ES 2 e tenho algumas perguntas, meu programa atual é assim:
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
O problema
O travamento de código fornecido, depois de algumas pesquisas, eu entendi o porquê: preciso desvincular meu buffer de índice na parte init (depois de "preencher o buffer de índice glBufferData") ou desvinculá-lo antes do primeiro "Bind VAO"
Minhas perguntas são:
- Posso colocar meu buffer de índice no VAO (buffer de índice de ações VAO?)?
- Eu tive que desvincular buffers após cada atualização (glBufferData)?
Na minha aplicação, eu tenho alguns buffers que são atualizados em cada quadro (exemplo: Partículas), então eu tenho uma pilha OpenGL assim:
-> bind buffer 1
-> update buffer 1
-> close buffer 1
-> bind buffer 1
-> draw
As primeiras 3 linhas atualizam o buffer Vertex, os dois últimos objetos de desenho, que devem ser algo assim:
-> bind buffer 1
-> update buffer 1
-> draw
obrigado
fonte