В моем приложении на основе OpenGL-ES 1.1 я использую CALayer
в качестве источника текстур OpenGL. Эти CALayer
s состоят из CGImage
s и текста, отображаемого с помощью CoreGraphics. Другой источник текстуры OpenGL - это снимок экрана UIView
, сделанный с использованием - [CALAyer renderInContext:]
и UIGraphicsGetImageFromCurrentImageContext
. В настоящее время я полностью работаю в основном потоке.
Последний случай, в частности, довольно плох, потому что он останавливает рендеринг OpenGL на все время, необходимое для создания UIView
и его снимка экрана.
Сейчас я подумываю переместить код OpenGL в отдельный поток в надежде обойти эту блокировку. В идеале снимок экрана должен быть сделан в другом потоке (при необходимости, в основном потоке), чем при рендеринге OpenGL.
Я не был ' t смог найти в документации полное описание того, что требует запуска в основном потоке, а что нет. Я нашел некоторые комментарии в примечаниях к выпуску iOS 4 и некоторые комментарии в конкретных методах UIKit, но мне не хватает полной картины.
Код работает на iOS 4.x или выше.