这会导致内存泄漏吗?

时间:2010-06-30 02:13:37

标签: c++ c opengl

我像这样创建我的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 个答案:

答案 0 :(得分:4)

它不会导致内存泄漏,因为缓冲区未重新分配。

但为什么不使用glBufferSubData()?它可能会更快,基本上也是一样的。

答案 1 :(得分:0)

我已将“glBufferDataARB”输入Google并发现这是第一次点击:

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

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

答案 2 :(得分:0)