不久前,我遇到了eglSwapBuffers
冻结手机的问题,设备日志中显示以下消息:
W/SharedBufferStack( 1110): waitForCondition(LockCondition) timed out (identity=28, status=0). CPU may be pegged. trying again.
我在网上看到了关于这个问题的讨论,但我发现唯一有效的解决方案是调用glFinish
after eglSwapBuffers
。然而,这种解决方案会导致帧率下降 10 到 20 倍,这远远不能接受。
问题已打开,可以在此处找到
有人评论说使用方形纹理消除了这个问题。我最初以为他指的是二次幂纹理,但在确保我没有使用任何非二次幂纹理并且没有摆脱这个问题之后,我开始认为他可能实际上是指具有匹配的纹理宽度和高度?
我正在使用 Android 2.3.3 测试 HTC Desire。有人评论说未来的版本应该已经解决了这个问题,但是 2.3.3 安装在这么多设备上,我们不能忽视它。
无论如何,有人对此有任何想法吗?我们非常接近发布一个标题,这个问题正在威胁到进度。