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这实际上是完美的,但我仍然对这个删除业务感到好奇。 –