作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在我的应用程序中遇到这个问题已经有一段时间了。当 HTC 手机使用 OpenGL 进行渲染时,它会通过随机硬锁定或重启 HTC 手机来表现出来。检查 logcat 它似乎是一个死锁问题,因为您将看到打印出来的...
waitForCondition(LockCondition) timed out (identity=9, status=0). CPU may be pegged. trying again.
到目前为止,我能找到的最好的信息来源是: http://groups.google.com/group/android-developers/browse_thread/thread/d5b7e87f4b42fa8f/d6214ed7a02efc98?q=freeze&lnk=ol&
他们建议在 glSurface 的 OnDraw 函数末尾添加 glFinish。使用此解决方案我没有取得很好的效果(它仍然崩溃但不那么频繁)。还有其他人听说过这个问题吗?遇到更好的解决方案了吗?
最佳答案
我们在使用 HTC Sensation 设备和 Android 2.3.4 的游戏中遇到了这个问题 - 所以我们去购买了设备并进行了一些试验。解决方案之一是在 onDraw()
方法的末尾调用 egl.eglWaitGL()
但这会将帧速率减半 - 令人惊讶的是仅在该设备上,但我认为这是一个糟糕的解决方案,并一直在寻找。
第二个修复和我们目前使用的几乎没有性能损失的修复是停止使用 glBufferSubData
更新我们的顶点数组并继续使用 glBufferData
上传整个数组>。如果您使用 VBO 和 glBufferSubData 来更新它们,请尝试更改它。
关于android - HTC 仅在 OpenGL 中发生硬崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5239089/
我是一名优秀的程序员,十分优秀!