0
我試圖動態刪除我的應用程序中的VBO,以創建具有不同大小的新VBO。但是,當我的程序嘗試刪除它時,它會崩潰並出現分段錯誤。調用glDeleteBuffersARB導致段錯誤
下面是我的代碼分配VBO:
glGenBuffersARB(1, &_vertexBufferID);
glBindBufferARB(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferDataARB(GL_ARRAY_BUFFER,
_pMetadata->vertexBufferSize(),
NULL,
GL_STATIC_DRAW)
數據定期添加到VBO以下代碼:
glBindBufferARB(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferSubDataARB(GL_ARRAY_BUFFER,
_pMetadata->vertexSubBufferOffset(),
_pMetadata->vertexSubBufferSize(),
&row[0]); // row is a vector<float>
而在代碼的其他地方我試圖刪除VBO像這樣:
glDeleteBuffersARB(1, &_vertexBufferID)
而且它在那條線上,我收到一個分段故障。我已確保在刪除時正確的OpenGL上下文處於活動狀態。
順便說一下,你不需要刪除一個VBO只是爲了改變它的大小,調用不同大小的'glBufferData'就足夠了。但是也許你的實際應用更復雜。 –
你可以運行內存檢查,像valgrind? –
@ChristianRau這實際上是完美的,但我仍然對這個刪除業務感到好奇。 –