HTC内部只有硬盘崩溃

Tur*_*age 9 android opengl-es htc-android

我在我的应用程序中已经看到这个问题了一段时间.它通过随机硬锁或重启HTC手机在使用OpenGL进行渲染时显示出来.检查logcat它似乎是一个死锁问题,因为你会看到这个打印...

waitForCondition(LockCondition) timed out (identity=9, status=0). CPU may be pegged. trying again. 
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能够找到的最佳信息来源是:http: //groups.google.com/group/android-developers/browse_thread/thread/d5b7e87f4b42fa8f/d6214ed7a02efc98?q = free&lnk = ol&

他们建议在glSurface的OnDraw函数末尾添加glFinish.我使用这个解决方案没有很好的结果(它仍然崩溃,但不常见).还有其他人听说过这个问题吗?遇到任何更好的解决方案?

小智 1

我们在使用 HTC Sensation 设备和 Android 2.3.4 进行游戏时就遇到了这个问题 - 因此我们购买了该设备并进行了一些实验。egl.eglWaitGL()其中一个解决方案是在方法结束时调用onDraw(),但这会使帧速率减半 - 令人惊讶的是仅在该设备上,但我认为这是一个糟糕的解决方案并继续寻找。

第二个修复,也是我们当前使用的几乎没有性能损失的修复,是停止使用glBufferSubData来更新我们的顶点数组并继续使用 上传整个数组glBufferData。如果您使用 VBO 和 glBufferSubData 来更新它们,请尝试更改它。