Я настроил пользовательский iOS UIView, который отображает список слоев, одним из которых является CAMetalLayer
. Я пытался нарисовать тот же контент для изображения в CGContext
. Я пытался извлечь содержимое слоя, чтобы построить CGImage
, но не смог найти хороший путь.
Во-первых, я пытался асинхронно извлечь содержимое кадрового буфера с помощью обратного вызова addCompletedHandler()
, но асинхронный характер обратного вызова не работал хорошо с CGContext
.
Я также пытался извлечь содержимое CAMetalLayer
с помощью свойства layer.contents
, но, очевидно, тип contents
- CAImageQueue
, который не имеет документации или предоставляется через API.
Я также пытался визуализировать слой прямо на CGContext
, например, так:
layer.render(in: cgContext)
но это тоже не принесло никаких результатов.
Наконец, все, что мне нужно сделать, это извлечь байты, составляющие текстуру слоя, и я мог бы создать свой собственный CGImage
с нуля.