我试图调试为什么我没有看到正在渲染的新对象(四边形),所以我使用了#34; Capture GPU框架" Xcode的功能。它通常可以正常工作,但现在它在EXC_BAD_ACCESS
期间在另一个渲染调用中给我glDrawElements
。
请注意,似乎类似于我见过的错误,与VBO的混合使用有关,而不是。但是,我确实在使用后解除了VBO的绑定,并禁用了顶点属性数组:
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glDisableVertexAttribArray(posAttr);
glDisableVertexAttribArray(texCoordAttr);
(另外,请记住,在使用"捕捉GPU帧"时,我只会遇到崩溃,而不是所有时间)
我可能做错了什么?或者这可能是Xcode中的一个错误......?
答案 0 :(得分:0)
这确实是由于某些GL状态遗留下来,特别是glVertexAttribPointer
。我没有抓住它的原因是因为它直接在3d引擎本身内是一个操作顺序问题:在一些状态被清除之前,子对象被迭代(和渲染)。
(道歉,这是一个繁琐的项目特定问题)