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