glDeleteBuffers más lento que glBufferData
Tengo un pequeño problema de rendimiento en mi juego de iOS / Android, en el que varios VBO deben actualizarse de vez en cuando. Después de perfilar mi juego, resulta que glDeleteBuffers () toma hasta 7 ms por actualización de VBO. Por supuesto, esto resulta en un problema cuando las tramas normalmente toman solo 4 ms en renderizarse.
Aquí está la parte donde actualizo mi 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);
}
donde offset es una variable de instancia es básicamente el tamaño del nuevo VBO, que es bastante variable. vboid habla por sí mismo, supongo;)