Если вы рисуете большие фоновые изображения с движущимся содержимым на переднем плане, рассмотрите возможность использования слоя NSView
, добавления слоя и установки его фонового изображения. Затем вы можете нарисовать ваш контент в других слоях (или на слоях NSViews
) над фоновым слоем, и представлению никогда не потребуется перерисовывать фоновое изображение, поскольку оно хранится в текстурной памяти графического процессора. Ваше текущее изображение слишком велико для одного CALayer
(CALayer
s ограничены максимальным размером текстуры OpenGL 2048 x 2048), поэтому вам, вероятно, придется разбить его на плитки.
В противном случае, как упомянул @iolo, вы должны убедиться, что перерисовываете только те части представления, которые действительно нуждаются в обновлении.