iOS / Androidゲームでパフォーマンスの問題が少し発生しており、いくつかのVBOを時々更新する必要があります。私のゲームをプロファイリングした後、glDeleteBuffers()はVBOの更新ごとに最大7msかかることがわかりました。もちろん、これにより、フレームのレンダリングに通常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);
}
ここで、offsetはインスタンス変数であり、基本的には新しいVBOのサイズであり、かなり可変です。vboIDはそれ自体を物語っています、私は推測します;)