Базовая анимационная архитектура - PullRequest
3 голосов
/ 07 июля 2011

Из документации видно, что основной слой анимации находится выше OpenGL и Quartz2D. то есть выполнение основной анимационной команды должно привести к последовательности команд Quartz2D и OpenGL. Я прав?

В конструкторе интерфейсов, на вкладке View Effects, мы можем установить основной слой анимации. Что происходит внутри? Когда мы отмечаем опцию Context View, содержимое на экране (кнопки, прокрутки и т. Д.) Не рисуется с использованием основного контекста или currentContext (view), но для них создается новый растровый контекст. Что там происходит под капотом?

Может, кто-нибудь объяснит мне связь между CoreAnimation Layer и Quartz2d / OpenGL?

1 Ответ

3 голосов
/ 07 июля 2011

Слои Core Animation - это, по сути, высокоуровневые абстракции поверхностей OpenGL.Они хранятся и обрабатываются графическим процессором, поэтому манипуляции со слоями чрезвычайно быстры.CALayer объекты сами по себе очень легкие и не обрабатывают события.

Объекты NSView с многослойной поддержкой (это то, что вы получаете, если вы включите флажки в Интерфейсном Разработчике) - это представления, которые отображают их содержимоеслой Core Animation, снова сохраненный в памяти графического процессора и имеющий те же преимущества в производительности, что и обычные CALayer объекты, но со всеми функциональными возможностями обычного NSView.

. В результате получается, что содержимое представлениявизуализируется (через Кварц) на его слой подложки (по сути, текстура OpenGL).Представление тогда должно только нарисовать снова, если содержание слоя изменяется.

Изменения положения, масштаба, поворота и т. Д. Слоя представления не требуют перерисовки содержимого представления.Это означает, что большую часть времени ЦП не требуется постоянно перерисовывать представление.

...