почему рисунок UIKit не ускоряется при использовании графического процессора «напрямую» - PullRequest
0 голосов
/ 13 мая 2011

вы много слышали о преимуществах OpenGL, использующих графический процессор напрямую, и о том, что это главное преимущество использования этой технологии, например, над UIKit. Но, если так намного лучше, почему UIKit не делает этого тоже?

Ответы [ 3 ]

6 голосов
/ 13 мая 2011

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

Кстати, я думаю, что это одно из величайших технических достижений Apple. Подумайте о том, насколько комфортно (как для разработчика, так и для пользователя) и как много работы потребуется для достижения чего-то отдаленно похожего.

1 голос
/ 13 мая 2011

Чтобы добавить еще несколько комментариев к тому, что написал Стивен:

Каждый рисунок на OS X и iOS в конечном итоге выполняется Open GL.Но есть способы сделать рисование линии:

  1. один - отрисовать линию в растровое изображение с помощью ЦП, а затем отправить полученное растровое изображение в графический процессор, чтобы показать его,

  2. Другой способ - отправить команду рисования в графический процессор, чтобы графический процессор выводил ее на растровое изображение.

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

Если вы используете Open GL вручную, 2. это то, что вы обычно делаете.Я не уверен, какой путь рисования UIKit, как UIBezierPath, использует, но аналог OS X, AppKit, использует метод 1, если вы не подписались, который называется Quartz GL (который в прошлом назывался Quartz 2d extreme):

  1. Обычно AppKit отрисовывает вещи в растровое изображение и отправляет его в графический процессор.
  2. При включенном Quartz GL AppKit отправляет команды рисования в графический процессор.

Но Quartz GL по умолчанию не включен из-за различных технических причин, которые подробно описаны в (всегда фантастических) статьях Ars Technica Джона Сиракузы.См. Обсуждения здесь для 10,4 и еще для 10,5 .

Вот одна официальная документация по Quartz GL .

1 голос
/ 13 мая 2011

У меня проблемы с поиском документации для резервного копирования моего утверждения, но я считаю, что стек выглядит примерно так:

UIKit -> Core Graphics -> Quartz2D -> OpenGL

Итак, UIKit фактически использует OpenGL для ускорения виджетов пользовательского интерфейса.

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