Проблема производительности OpenGL ES, когда UIView частично за кадром - PullRequest
5 голосов
/ 05 января 2012

В настоящее время я работаю над игрой OpenGL, и недавно начал ее рефакторинг для поддержки iPhone в дополнение к iPad.В попытке уделить как можно меньше работы, я просто изменил размер EAGLView до 480 x 360 (чтобы сохранить соотношение сторон iPad) и переместил изображение вверх, чтобы его исходное положение лежало на -20 (чтобы центрировать контенти как края можно было обрезать).

Я обнаружил, что это привело к резкой производительности устройства (несмотря на то, что ссылка CADisplay сообщала о длительности кадра, равной 59-61 кадр / с) и было по меньшей мере на 20% медленнее по сравнению с версией iPad.

Затем я попытался изменить размер представления до размера экрана 480 x 320, и производительность вернулась к норме (хотя визуализированный контент больше не имеет правильное соотношение сторон).

ПочемуРендеринг вне экрана вызывает снижение производительности, и почему displaylink все еще думает, что он работает на скорости 60 кадров в секунду?

Есть идеи?Спасибо

1 Ответ

0 голосов
/ 23 января 2012

Это в основном дикое предположение, но как насчет отсечения регионов?Была эта аппаратная функциональность, которая позволяла смешивать окна и графику с аппаратным ускорением.Возможно, это не очень хорошо реализовано на мобильных устройствах.

Однако вы можете не делать UIView за кадром и попытаться использовать glViewport (), чтобы сместить части представления за экран.Хотя кажется, что это то же самое, оно обрабатывается другой частью конвейера (растеризатором) и должно быть намного быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...