我有一个EXC_BAD_ACCESS
这段代码的最后一行(此代码被触发每秒几次),但我想不出是什么问题:EXC_BAD_ACCESS与glTexImage2D在GLKViewController
[EAGLContext setCurrentContext:_context];
glActiveTexture(GL_TEXTURE0);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, _backgroundTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, _outputFrame.cols, _outputFrame.rows, 0, GL_BGRA, GL_UNSIGNED_BYTE, _outputFrame.data);
调试时,我确保纹理被创建(id为> 0),输出帧具有指向数据的有效指针并且是4通道矩阵。我在GLKViewController的drawRect
方法中。我认为我不应该绑定framebuffer,因为它是这里自动化的东西之一。 它不会在第一帧时崩溃,而会在几十帧后崩溃。
任何人都可以发现问题吗?
UPDATE:
这似乎是因为对_outputFrame
的竞争条件,它正在同时通过glTexImage2D
读取更新。我会尝试锁定它进行阅读,然后回报。
如果您可以发布您的解决方案,如果他们有类似的问题,那么其他人可以从中受益。 – Unheilig 2014-09-28 09:42:53
我发布了它,但不知道它是否对任何人都有用,因为它是非常具体的... – aledalgrande 2014-09-28 19:02:44