不久前,我遇到了eglSwapBuffers
冻结电话的问题,设备日志中显示以下消息:
W/SharedBufferStack( 1110): waitForCondition(LockCondition) timed out (identity=28, status=0). CPU may be pegged. trying again.
我已经在网上看到了有关此问题的讨论,但是我发现唯一有效的解决方案是在
glFinish
之后调用eglSwapBuffers
。但是,该解决方案导致帧速率下降10-20倍,这是远远不能接受的。问题已经打开,可以找到一个here
有人评论说使用正方形纹理消除了这个问题。直言不讳,我最初以为他是指二次幂纹理,但是在确保我没有使用任何非二次幂纹理并且没有摆脱这个问题之后,我开始认为他可能实际上是指具有匹配的纹理宽度和高度?
我正在使用Android 2.3.3在HTC Desire上进行测试。有人评论说,将来的版本应该已经解决了这个问题,但是在许多设备上都安装了2.3.3,我们不能忽略它。
无论如何,有人对此有任何想法吗?我们非常接近发行标题,这个问题正威胁到时间表。
最佳答案
我也遇到过这个问题,我曾经重新安装过Application并为我工作,如果没有,那么只需重启设备即可。这个问题与OpenGLES的内部问题有关,您可以引用以下链接:
Android "cpu may be pegged" bug
关于android - Android在OpenGL | ES中卡住(可能挂了CPU。请重试。),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10199231/