Ответ 1
IMO, как правило, любой вид рисунка требует большой мощности обработки. И компоновка кэшированного растрового изображения с графическим процессором очень дешева, чем рисовать все из них снова. Таким образом, во многих случаях мы кэшируем все чертежи в растровые изображения, а в iOS, CALayer
отвечает за это.
В любом случае, если ваши растровые изображения превышают ограничение видеопамяти, Quartz не может одновременно соединить все слои. Следовательно, кварц должен рисовать один кадр на нескольких фазах. И это требует перезагрузки некоторых текстур в графический процессор. Это может повлиять на производительность. Я не уверен в этом, потому что iPhone VRAM, как известно, интегрирован с системной ОЗУ. Во всяком случае, все еще верно, что в этом случае требуется больше работы. Если даже системная память становится недостаточной, система может очистить существующее растровое изображение и попросить их перерисовать позже.
-
CAShapeLayer
будет делать всеCGContext
(я полагаю, вы имели в виду это) работает вместо вас. Вы можете сделать это сами, если почувствовали потребность в более низкой оптимизации уровня. -
Да. Очевидно, что у всех есть ограничение по представлению производительности. Если вы используете сотни слоев с большой альфа-смешанной графикой, это вызовет проблему с производительностью. Во всяком случае, как правило, этого не происходит, потому что состав слоев ускоряется GPU. Если ваших линий графика не так много, и они в основном непрозрачны, вы будете в порядке.
-
Все, что вам нужно знать, - это когда графические чертежи составлены, нет возможности их разложить. Потому что сама композиция является своего рода оптимизацией с помощью сжатия с потерями, поэтому у вас есть только два варианта (1) перерисовать всю графику, когда требуется мутация. Или (2) Сделать кэшированное растровое изображение каждого элемента отображения (например, линии графика) и просто составным, как ваши потребности. Это то, что делают CALayers.
-
Абсолютно основанный на слоях подход намного лучше. Любой вид рисунка свободной формы (даже в графическом процессоре) требует гораздо большей вычислительной мощности, чем простая растровая композиция (которая станет двумя текстурированными треугольниками) с помощью графического процессора. Конечно, если ваши слои не превышают ограничение видеопамяти.
Надеюсь, это поможет.