伪代码:
void draw()
{
Vertex* vertices = scene.GetVertexArray();
glEnableClientState(...);
glVertexPointer(..., vertices);
glDrawArrays(...);
glDisableClientState(...);
delete vertices;
}
我没有使用 VBO,因为我想支持较旧的 OpenGL 实现。
调用 glDrawArrays 后,我想:
- 释放我的顶点数组(“
delete vertices;
”) - 也许修改一些顶点
但是,GL 可以自由地异步执行 glDrawArrays,在完成之前释放或修改我的数组是不安全的。
我可以做一个 glFinish 来确保这一点,但它会减慢应用程序的速度。
那么在什么时候我可以自由地释放/修改我的顶点数组?