glDeleteBuffers mais lento que glBufferData
Estou tendo um problema de desempenho no meu jogo iOS / Android, onde vários VBOs precisam ser atualizados de vez em quando. Depois de fazer o perfil do meu jogo, verifica-se que glDeleteBuffers () leva até 7ms por atualização do VBO. Isso, claro, resulta em um soluço quando os quadros normalmente levam apenas 4 ms para renderizar.
Aqui está a parte em que atualizo meu VBO:
Chunk* chunk;
pthread_join(constructionThread, (void**)&chunk);
building = false;
if (vboID)
{
//takes 7 milliseconds
glDeleteBuffers(1, &vboID);
vboID = 0;
}
if (offset)
{
glGenBuffers(1, &vboID);
glBindBuffer(GL_ARRAY_BUFFER, vboID);
//takes about 1-2 milliseconds, which is acceptable
glBufferData(GL_ARRAY_BUFFER, offset * 4, constructionBuffer, GL_STATIC_DRAW);
}
onde offset é uma variável de instância é basicamente o tamanho do novo VBO, que é bastante variável. vboID fala por si mesmo, eu acho;)