2012-01-05 2 views
5

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

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

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

Почему рендеринг 'off screen' приводит к удару по производительности и почему дисплейная линия все еще думает, что она работает со скоростью 60 кадров в секунду?

Любые идеи? Спасибо

ответ

0

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

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

+0

Спасибо за ответ, я закончил настройку видового экрана, как вы сказали, и теперь он бежит, как сон. – Weaverfish

+0

Рад услышать это ... –

Смежные вопросы