CAOpenGLLayer к изображению - PullRequest
0 голосов
/ 22 мая 2019

Есть ли способ захватить содержимое CAOpenGLLayer как изображение?

Маршрут CALayer с использованием renderInContext: не работает (пустое изображение) в 10.14 и согласно комментариям Apple:

Реализация этого метода в OS X v10.5 не поддерживает вся модель композиции Core Animation. QCCompositionLayer, Слои CAOpenGLLayer и QTMovieLayer не отображаются.

Очевидно, это никогда не исправлялось.

Маршрут NSView с использованием

NSBitmapImageRep* rep = [self bitmapImageRepForCachingDisplayInRect:self.bounds];
[self cacheDisplayInRect:self.bounds toBitmapImageRep:rep];

тоже не работает, что приводит к одинаково пустому изображению ..

Когда вызывается в представлении, содержащем CAOpenGLLayer, это приводит к совершенно пустому изображению, в contentView окна представления есть содержимое окна -
за исключением области, охватываемой представлением OpenGL, которое аккуратно «вырезано» (пусто) ..

Любые предложения о том, как визуализировать содержимое OpenGL в NSImage, приветствуются.

1 Ответ

0 голосов
/ 23 мая 2019

Вместо того, чтобы пытаться захватить содержимое слоя, вам нужно получить код рисования слоя для явного рендеринга в буфер и вернуть вам этот буфер.

...