调用glDeleteBuffersARB会导致段故障
Call to glDeleteBuffersARB results in segfault
我试图动态删除我的应用程序中的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上下文在删除时是活跃的。
我曾经调试过一个类似的纹理问题,这是由填充数据时缓冲区溢出引起的。在你的glBufferSubDataARB调用之前添加一个边界检查,以确保你不会溢出offset+size。看看GL_BUFFER_SIZE作为参数的glGetBufferParameteriv,以获得检查
相关文章:
- Python & C-C++ 扩展模块案例段故障
- 中断;导致段故障
- 带指针的调用函数会导致段故障
- 由于变量范围导致的段故障
- 为什么通过shared_from_this()会导致段故障
- 简单的C++字符数组加密功能 - 段故障
- std::vector的函数push_back中的堰段故障
- 在openCV中将cvPoint[][]转换为cvPoint**时出现段故障
- 模板变量分配段故障11
- CIN 一个非常大的 int 数组,段故障 11
- C++段故障错误
- 段故障 -> 在标准::basic_ostream<字符中,标准::char_traits<char>
- C++中的二叉树段故障
- 调试执行工作正常,但正常的一段故障
- c++:几乎相同的输入,但第二次调用显示段故障
- 段故障。地址0x0不是堆叠的、恶意的或(最近)释放的
- 使用矢量引起的段故障
- 使用arm-linux- gnuabi -g++ -o时出现段故障,不使用-o也不会出现问题
- 为什么会出现以下段故障
- 在类文件和缓冲区中查找段故障