c++ - 我可以在调用 glDrawArrays 后删除 OpenGL 顶点数组吗?

标签 c++ opengl lifetime vertex-array

我在每次渲染时动态生成顶点数组,之后我想删除这些数组。 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?

否则,我如何确定何时删除顶点数组是安全的?

最佳答案

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

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

关于c++ - 我可以在调用 glDrawArrays 后删除 OpenGL 顶点数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2212847/

相关文章:

c++ - 引用的生命周期是否延长?

c++ - 引用包装器的初始化列表

c++ - const char* 没有传递完整的文件名

c++ - StringHashTable 线程安全中使用的静态函数?

c++ - 基类的私有(private)虚函数被派生的私有(private)虚函数隐藏

c++ - 在 MacOS 上使用 QOpenGLDebugLogger

rust - 为什么编译器假定返回的引用与结构具有相同的生命周期?

c++ - 调用一个平凡的析构函数有什么影响?

c++ - OpenGL 4.3 程序 Ubuntu 14.04 x64 中时间变量冲突的问题

c++ - OpenGL glTexParameteri错误0x0500