我找到了有关该错误的更多详细信息。
它似乎与信息有关,gpus_ReturnGuiltyForHardwareRestart。
google了一下,似乎关于这个bug的信息相当有限。
您以前遇到过这种情况并且知道如何解决吗?
我认为我有必要更新我所发现的有关崩溃的信息。
看来上述崩溃与子视图无关,因为在我禁用了处理子视图的所有行后,崩溃仍然发生。
相关代码如下,
{
float scissor_x = _xMin;
float scissor_y = _yMin;
float scissor_w = _xAdd;
float scissor_h = _yAdd;
glEnable(GL_SCISSOR_TEST);
glScissor(scissor_x, scissor_y, scissor_w, scissor_h);
computeXY();//process some computation.
glDisable(GL_SCISSOR_TEST);
drawImage();//render the result computed above to the screen.
_xAdd++;
_yAdd++;
_xAdd = (_xAdd > 300) ? 100 : _xAdd;
_yAdd = (_yAdd > 300) ? 100 : _yAdd;
}
上面列出的行将在每一帧期间被调用。不知道使用glscissor()是否有一些要求。如果_xAdd、_yAdd 的值设置为不变,则程序运行成功。但是,如果在每一帧期间都更改它们,则程序肯定会在几步后崩溃。
我真的很困惑。
这是调试器的输出,
(lldb) bt
* thread #1: tid = 0x7262e, 0x337bc94a libGPUSupportMercury.dylib`gpus_ReturnGuiltyForHardwareRestart + 10, queue = 'com.apple.main- thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x1)
frame #0: 0x337bc94a libGPUSupportMercury.dylib`gpus_ReturnGuiltyForHardwareRestart + 10
我已经解决了这个问题。当调用gl_scissor()时,你必须确定参与后续计算的像素/纹素有自己的有效值。因此,在使用 gl_scissor() 之前,我将初始化所有 FBO 缓冲区,以使所有像素或纹素都有自己的有效值。
Thx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)