我正在尝试动态删除应用程序中的VBO,以便创建不同大小的新VBO。然而,当我的程序试图删除它们时,它会崩溃,并出现分段错误。
下面是我分配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上下文处于活动状态。
发布于 2011-11-14 14:09:28
我调试过一次纹理的类似问题,它是由填充数据时的缓冲区溢出引起的。在glBufferSubDataARB调用之前添加一个边界检查,以确保offset+size不会溢出。看一下使用GL_BUFFER_SIZE作为参数的glGetBufferParameteriv,以获取要检查的边界
https://stackoverflow.com/questions/8085248
复制相似问题