Хотя в документации не говорится, что CALayers работают аналогично CGLayers, Обзор графики и изображений говорит о том, что Core Animation «ускоряется с помощью GPU», что, я думаю, мы можем с уверенностью истолковать, сказав, что оно помещает контент CALayer на видеокарту, когда это возможно. Это то, что делает CGLayer тоже.
Итак, я ожидаю, что CALayer, поддерживаемый CGImage, обеспечит примерно такое же повышение производительности, что и CGLayer, если вы не часто меняете изображение.
Если вы хотите быть абсолютно уверены, что получите то же поведение кэширования как текстуры, что и CGLayer, создайте подкласс CALayer, который имеет свойство для хранения CGLayer и отвечает на drawInContext:
, рисуя CGLayer .
Загвоздка в том, что , если CALayer кэширует динамически нарисованный контент на видеокарте (и я не знаю, так ли это), он будет у вас там дважды, тратя впустую видеопамять. Для всех вас, и я знаю, контекст, который CALayer дает вам рисовать, является контекстом CGLayer.