首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用glDeleteBuffersARB会导致段错误

调用glDeleteBuffersARB会导致段错误
EN

Stack Overflow用户
提问于 2011-11-11 03:34:05
回答 1查看 636关注 0票数 0

我正在尝试动态删除应用程序中的VBO,以便创建不同大小的新VBO。然而,当我的程序试图删除它们时,它会崩溃,并出现分段错误。

下面是我分配VBO的代码:

代码语言:javascript
运行
复制
glGenBuffersARB(1, &_vertexBufferID);
glBindBufferARB(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferDataARB(GL_ARRAY_BUFFER,
                _pMetadata->vertexBufferSize(),
                NULL,
                GL_STATIC_DRAW)

数据在以下代码中定期添加到VBO中:

代码语言:javascript
运行
复制
glBindBufferARB(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferSubDataARB(GL_ARRAY_BUFFER,
                   _pMetadata->vertexSubBufferOffset(),
                   _pMetadata->vertexSubBufferSize(),
                   &row[0]); // row is a vector<float>

在代码的其他地方,我尝试删除VBO,如下所示:

代码语言:javascript
运行
复制
glDeleteBuffersARB(1, &_vertexBufferID)

就是在这一行上,我收到了一个分段错误。我已确保在删除时正确的OpenGL上下文处于活动状态。

EN

回答 1

Stack Overflow用户

发布于 2011-11-14 14:09:28

我调试过一次纹理的类似问题,它是由填充数据时的缓冲区溢出引起的。在glBufferSubDataARB调用之前添加一个边界检查,以确保offset+size不会溢出。看一下使用GL_BUFFER_SIZE作为参数的glGetBufferParameteriv,以获取要检查的边界

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8085248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档