这会导致内存泄漏吗?

3

我是这样创建VBO的:

glGenBuffersARB(1,&polyvbo);

    glBindBufferARB(GL_ARRAY_BUFFER_ARB,polyvbo);
    glBufferDataARB(GL_ARRAY_BUFFER_ARB,sizeof(GLfloat) * tempvct.size(),&tempvct[0],GL_DYNAMIC_COPY);

然后要更新它,我只需要做同样的事情:
    glBindBufferARB(GL_ARRAY_BUFFER_ARB,polyvbo);
    glBufferDataARB(GL_ARRAY_BUFFER_ARB,sizeof(GLfloat) * tempvct.size(),&tempvct[0],GL_DYNAMIC_COPY);

不用说,tempvct中的数据会发生变化。

我只是想知道上述代码是否会导致内存泄漏。我需要删除VBO并重新创建它,还是它会自动删除旧的并更新?

谢谢。

3个回答

4

这不会导致内存泄漏,因为缓冲区没有重新分配。

但为什么不使用glBufferSubData()呢?它可能会更快,并且基本上做同样的事情。


0

我在谷歌上输入了“glBufferDataARB”,并发现这是第一个搜索结果:

http://www.songho.ca/opengl/gl_vbo.html

我建议你阅读它。据我了解,glGenBuffersARB函数创建缓冲对象,而glDeleteBuffersARB函数销毁它们,因此其他两个函数只是重复使用现有的缓冲区而不修改其分配。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接