3

我在每次渲染时动态生成顶点数组,然后我想删除这些数组。是否glDrawArrays立即将顶点数组复制到服务器?因此,调用后删除顶点数组是否安全glDrawArrays

float * vp = GetVertices(); // Regenerated on each render
glVertexPointer(3, GL_FLOAT, 3 * sizeof(float), vp);
glDrawArrays(GL_TRIANGLES, 0, nVertices);
delete[] vp; // Can I do this?

否则,我如何确定何时可以安全地删除顶点数组?

4

2 回答 2

8

是的,它会立即被复制,所以一旦你完成了调用,你就可以对数组做任何你喜欢的事情。

此外,正如 dirkgently 指出的那样,您需要用于delete[] vp删除数组。

于 2010-02-06T11:43:59.027 回答
2

是的,您可以在调用 glDrawArrays 后删除顶点数组。但是opengl不会将顶点数据存储在它的内存中。它只会使用顶点数组并在帧缓冲区上绘制。所以下次如果你想绘制相同的顶点,那么你必须再次将顶点数组提供给glDrawArrays。

于 2012-01-05T07:26:29.500 回答