gpus_ReturnGuiltyForHardwareRestart

我发现了更多关于这个bug的细节。 似乎与这个信息有关,gpus_ReturnGuiltyForHardwareRestart。 谷歌之后,似乎有关于这个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的值设置为不变,则程序成功。 但是,如果在每一帧期间它们都被改变了,那么程序在几个步骤之后肯定会崩溃。

我真的很困惑。

这里是debugging器的输出,

 (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缓冲区,使得所有的像素或者纹理都拥有有效的值。

谢谢。