我像这样创建我的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并重新创建它,还是会自动删除旧的并更新?
由于
答案 0 :(得分:4)
它不会导致内存泄漏,因为缓冲区未重新分配。
但为什么不使用glBufferSubData()
?它可能会更快,基本上也是一样的。
答案 1 :(得分:0)
我已将“glBufferDataARB”输入Google并发现这是第一次点击:
http://www.songho.ca/opengl/gl_vbo.html
我建议你看看。据我了解,glGenBuffersARB创建缓冲区对象,glDeleteBuffersARB销毁它们,所以其他两个函数只是重用现有的缓冲区而不修改它的分配。
答案 2 :(得分:0)