【发布时间】:2014-11-24 19:31:11
【问题描述】:
我试图调试为什么我没有看到正在渲染的新对象(四边形),因此我使用了 Xcode 的“捕获 GPU 帧”功能。它通常工作正常,但现在它在 glDrawElements 期间的另一个渲染调用中给了我 EXC_BAD_ACCESS。
请注意,它似乎类似于我见过的错误,与 VBO 的混合使用有关,而不是。但是,我肯定会在使用后取消绑定 VBO,并禁用顶点属性数组:
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glDisableVertexAttribArray(posAttr);
glDisableVertexAttribArray(texCoordAttr);
(另外,请记住,我只是在使用“捕获 GPU 帧”时才会崩溃,而不是一直)
我可能做错了什么?或者这可能是 Xcode 中的错误...?
【问题讨论】:
-
另外,
glGetError()没有收到任何信息。 -
请注意,我已经消除了 VBO 作为一个问题:我将绘制代码转换为绝对不使用 VBO。
-
我还修复了我的原始四边形没有被渲染的原因(我的大小参数为零,所有顶点都在同一个地方)。但是,这并没有解决崩溃问题。最好还是追踪它!
-
这很可能是尝试访问超出 VBO 范围的数据的结果。如果您使用发布方案而不是调试,您可能会遇到同样的崩溃。无论如何,这信息太少,无法确定任何事情,但我会开始查看您的缓冲区数据和绘图调用的完整性。也有可能通过使用多个上下文或多线程而失去作用域。
标签: ios xcode opengl-es crash vbo