HTC Only Hard Crash внутри OpenGL - PullRequest
9 голосов
/ 09 марта 2011

Я уже давно вижу эту проблему в своем приложении.Это проявляется в случайной блокировке или перезагрузке телефонов HTC при рендеринге с использованием OpenGL.При проверке 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&

Там, где они предлагают добавить glFinish в конце функции OnDraw вашего glSurface.Я не получаю хороших результатов, используя это решение (оно все еще падает, но реже).Кто-нибудь еще слышал об этой проблеме?Нашли какие-нибудь лучшие решения?

1 Ответ

1 голос
/ 14 октября 2011

Мы столкнулись именно с этой проблемой в нашей игре с устройствами HTC Sensation и Android 2.3.4 - поэтому мы пошли и купили устройство и немного поэкспериментировали. Одним из решений было вызвать egl.eglWaitGL() в конце метода onDraw(), но это вдвое уменьшило частоту кадров - удивительно только на этом устройстве, но я посчитал это плохим решением и продолжал искать.

Второе исправление, которое мы используем в настоящее время и которое практически не сказывается на производительности, заключалось в прекращении использования glBufferSubData для обновления наших вершинных массивов и продолжении загрузки всего массива с glBufferData. Если вы используете VBO и glBufferSubData для их обновления, попробуйте изменить их.

...