Я пытался найти лучший способ показать существующий CALayer во вторичном окне, чтобы обеспечить полноэкранный вывод в режиме реального времени на вторичном мониторе.Кроме того, я хотел бы иметь возможность показывать миниатюры в реальном времени в моем приложении исходного CALayer, похоже, я должен быть в состоянии найти установку, которая могла бы удовлетворить оба требования.
Пока мои исследования привелив следующих опциях:
- CALayer.render (in: CGContext) Использование исходного слоя и перерисовка его в дополнительные представления таким образом и настройка таймера или CVDisplayLink для перерисовкиэто каждый кадр.
- Рендеринг CALayer в NSBitmap каждый кадр. И использование этого растрового изображения в NSImageView по всему приложению.
- Использование CAMetalLayer и рендерингТекстурируйте несколько раз, используя MTKView. Я не очень знаком с Metal, это кажется довольно элегантным решением, но я не уверен, нужно ли идти до самого Metal.
- Использование CARemoteLayerServer с CARemoteLayerServer. Это кажется слишком сложной настройкой для текущих процессов.харинг CALayer, и кажется, что этот подход более подходит, если бы мне нужно было использовать кросс-процесс слоя.
- Использование CAReplicatorLayer. Вместо использования слоя репликатора для созданиясетка копий Я пытался использовать ее для создания только одной копии, но кажется, что вы не можете добавить CALayer к нескольким «родительским слоям».
В общем, я нашел несколько работоспособных решений,но, поскольку я довольно новичок в работе с Core Animation, я не уверен, какое направление является наименее ресурсоемким, и мне все еще не хватает более простого решения.
Кто-нибудь пробовал что-то подобное?