Android GLSurfaceView ~ 56fps - Как управлять свопом? - PullRequest
1 голос
/ 26 октября 2011

При запуске базового образца: http://android -developers.blogspot.com / 2009/04 / введение-glsurfaceview.html

Добавление некоторой базовой синхронизации с использованием System.currentTimeMillis () или перетаскиванием в собственный код и использованием clock_gettime (CLOCK_REALTIME_HR, & res) приводит к тем же результатам, что и при отображении. Я тестировал с обоими по отдельности.

Я всегда вычисляю частоту кадров ~ 56. Это приблизительное среднее значение 18 мс между кадрами. Я понимаю, что выбор времени для кадров - не идеальная наука (точность таймера, устройство работает в фоновом режиме). Я просто позволил ему работать, ничего не делая, даже glClear. Через час это результаты, которые я получил, что примерно так же, как позволить ему работать в течение 1 минуты.

Я много чего пробовал, чтобы добиться истинных 59 / 60fps. Я начинаю задумываться, не мое ли это устройство (HTC Incredible S). Хотя я пробовал Samsung Galaxy S и Nexus S с одинаковыми результатами. Таблетки не проявляют такого поведения вообще. На моем EEE Transformer и Xoom я получаю ~ 16 мсек последовательно.

Это наводит меня на мысль, что проблема заключается в VSYNC, а vsync в этом поколении телефонов Android работает медленно. На самом деле VSYNC должен быть ~ 16 мс. Достижение истинных 60 кадров в секунду маловероятно, но 59fps должно быть обычным явлением.

Кто-нибудь еще испытывал это? Любые советы по отключению vsync? Я не думаю, что это возможно. Какие-либо советы по получению контроля над этапом рендеринга «своп»?

...