glDeleteBuffers wolniej niż glBufferData

Mam trochę problemów z wydajnością w mojej grze na iOS / Androida, gdzie kilka VBO musi być aktualizowanych co jakiś czas. Po profilowaniu mojej gry okazuje się, że glDeleteBuffers () zajmuje do 7 ms na aktualizację VBO. To oczywiście powoduje czkawkę, gdy renderowanie ramek zajmuje zwykle tylko 4 ms.

Oto część, w której aktualizuję mój 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);
}

gdzie offset jest zmienną instancji jest zasadniczo wielkością nowego VBO, która jest dość zmienna. vboID mówi sam za siebie;

questionAnswers(1)

yourAnswerToTheQuestion