2014-11-24 39 views
1

我试图调试为什么我没有看到一个新的对象(quad)被渲染,所以我使用了Xcode的“Capture GPU frame”功能。它通常工作正常,但现在它在glDrawElements期间在另一个呈现调用中给我EXC_BAD_ACCESSEXC_BAD_ACCESS当捕获GPU帧时

请注意,它似乎类似于我见过的错误,与VBOs的混合使用有关,而不是。不过,我肯定解除绑定VBO使用后,和禁用顶点属性阵列:

glBindBuffer(GL_ARRAY_BUFFER, 0); 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); 

glDisableVertexAttribArray(posAttr); 
glDisableVertexAttribArray(texCoordAttr); 

(另外,请记住,使用“捕捉GPU祯”时,我只得到了碰撞,不是所有的时间)

我可能会做错什么?或者这可能是Xcode中的一个错误...?

+0

另外'glGetError()'是不是捡任何东西。 – 2014-11-24 19:32:25

+0

注意:我已经取消了VBOs作为一个问题:我将我的绘图代码转换为不使用VBOs来完全确定。 – 2014-11-24 20:05:46

+0

我也修复了为什么我的原始四元组没有被呈现的原因(我有一个大小参数为零,所有顶点都在同一个地方)。但是,这并没有解决崩溃问题。将仍然很好地追踪它! – 2014-11-25 09:32:59

回答

0

这确实是由于一些GL状态被遗留,特别是glVertexAttribPointer。我没有理解它的原因是因为它直接在3d引擎本身内部存在操作顺序问题:在清除某个状态之前,子对象正在被迭代(并呈现)。

(道歉,这是一个繁琐具体项目的问题)