擬似コード:
void draw()
{
Vertex* vertices = scene.GetVertexArray();
glEnableClientState(...);
glVertexPointer(..., vertices);
glDrawArrays(...);
glDisableClientState(...);
delete vertices;
}
古い OpenGL 実装をサポートしたいので、VBO は使用していません。
glDrawArrays を呼び出した後、次のことを行います。
- 頂点配列の割り当てを解除
delete vertices;
(" ") - おそらくいくつかの頂点を変更します
ただし、GL は glDrawArrays を非同期で自由に実行でき、完了するまで配列の割り当てを解除したり変更したりするのは安全ではありません。
それを確実にするために glFinish を実行できますが、アプリの速度が低下します。
では、頂点配列を自由に解放/変更できるのはいつですか?