glDeleteBuffers медленнее, чем glBufferData

У меня есть небольшая проблема с производительностью в моей игре для iOS / Android, где необходимо периодически обновлять несколько VBO. После профилирования моей игры выясняется, что glDeleteBuffers () занимает до 7 мс на обновление VBO. Это, конечно, приводит к сбоям в работе, когда для рендеринга кадров обычно требуется всего 4 мс.

Вот часть, где я обновляю свой 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);
}

где смещение - это переменная экземпляра, в основном размер нового VBO, который довольно переменный. я думаю, vboID говорит сам за себя;)

Ответы на вопрос(1)

Ваш ответ на вопрос