2010-06-30 136 views
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并重新创建它,或者它会自动删除旧的并更新?

感谢

回答

4

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

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

0

我已经进入 “glBufferDataARB” 到谷歌,发现这个作为第一击:

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

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

相关问题