【发布时间】:2014-09-28 06:26:36
【问题描述】:
我在这段代码的最后一行有一个EXC_BAD_ACCESS(这段代码每秒被触发几次),但我不知道是什么问题:
[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 方法中。我认为我不应该绑定帧缓冲区,因为它是这里自动化的事情之一。 它不会在第一帧崩溃,而是在几十帧之后崩溃。
有人能发现问题吗?
更新:
似乎是因为_outputFrame 上的竞争条件,它正在被glTexImage2D 读取时更新。我会尝试锁定它以供阅读,然后再报告。
【问题讨论】:
-
如果您能发布您的解决方案,那就太好了,这样如果其他人遇到类似问题,他们也可以从中受益。
-
我贴出来了,不知道对大家有没有用,因为很具体...