Я использую OpenGL ES для создания пользовательского интерфейса пользовательского интерфейса на iOS. Вариант использования для приложения, как и в случае, который не будет обновляться на основе кадра (например, в игре). Из того, что я вижу до сих пор, кажется, что поведение GLKViewController по умолчанию - это перерисовать экран со скоростью около 30 кадров в секунду. Типично для пользовательского интерфейса при необходимости только перерисовывать, чтобы уменьшить использование ресурсов, и я бы не хотел откачивать дополнительную энергию от батареи, используя GPU, пока пользователь ничего не делает.iOS OpenGL ES - только рисовать по запросу
Я попробовал только очистить и нарисовать экран один раз в качестве теста и получил предупреждение от профайлера о том, что отображается неинициализированный буфер цветов.
Глядя на него, я нашел эту документацию: http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Reference/EAGLDrawable_Ref/EAGLDrawable/EAGLDrawable.html
В документации говорится, что есть флаг, kEAGLDrawablePropertyRetainedBacking, который при установке на YES, позволит BackBuffer сохранить вещи, сделанные к нему в предыдущем кадре. Тем не менее, в нем также говорится, что это не рекомендуется и вызывают проблемы с производительностью и памятью, и именно этого я и стараюсь избегать в первую очередь.
Я планирую попробовать в обоих направлениях, рисуя каждый кадр, а не, но мне любопытно, если кто-то столкнулся с этой ситуацией. Чтобы вы посоветовали? Разве это не такая большая сделка, как я предполагаю, что нужно перерисовать все 30 раз за кадр?
Нужно ли использовать GLKViewController? Не так сложно свернуть собственный хостинг OpenGL ES и контроллер просмотра, который обновляет его только тогда, когда это необходимо. Это то, что все мы должны были сделать до iOS 5.0. –
Интересно, я не понимал, что это вариант (я очень новичок в разработке iOS). Я посмотрю на это. – phosphoer
Я ссылаюсь на пару примеров приложений в [этом ответе] (http://stackoverflow.com/a/2858658/19679), один более простой, чем другой. Оба создают собственные пользовательские представления и контроллеры представлений, а обновления обрабатываются вручную или через прерыватель CADisplayLink. –