2010-06-30 158 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銷燬它們,所以其他兩個函數只是重用現有緩衝區而不修改其分配。

相關問題