2011-03-08 72 views
9

我在我的應用程序中看到這個問題有一段時間了。它通過在使用OpenGL進行渲染時隨機硬鎖或重新啓動HTC手機來展示自己。檢查它似乎是一個僵局問題,因爲你會看到這個打印logcat的......HTC OpenGL內部硬碰撞

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。我沒有使用這種解決方案獲得很好的結果(它仍然崩潰但不太常見)。有沒有人聽說過這個問題?遇到任何更好的解決方案?

+0

這會讓人感到無比安慰,但我感到你的痛苦。我在市場上有2條評論「手機鎖定,必須取消電池。HTC Desire」。不知道是什麼原因造成的,我已經看到遊戲在朋友的願望中運行良好。 – richq 2011-05-08 13:02:02

+0

是的,我已經在一些HTC手機上發生過這種情況,但主要是在壓力測試過程中(讓應用在一夜之間靜坐)。到目前爲止還沒有解決方案,我每隔幾周進行一次網絡搜索以查找更新。 – TurqMage 2011-05-09 18:00:45

回答

1

我們一直在使用HTC Sensation設備和Android 2.3.4在我們的遊戲中遇到這個問題 - 所以我們去購買了該設備並進行了一些實驗。其中一個解決方案是在onDraw()方法結束時調用egl.eglWaitGL(),但將幀率減半 - 僅在該設備上出人意料地出現,但我認爲這是一個糟糕的解決方案,並一直在尋找。

第二個修復程序和我們目前使用的幾乎沒有性能損失的修復程序是停止使用glBufferSubData來更新我們的頂點數組並繼續上傳整個數組與glBufferData。如果您使用VBO和glBufferSubData更新它們,請嘗試更改它。