В iOS 5 были введены кэши текстур OpenGL ES, чтобы обеспечить прямой путь от видеоданных камеры к OpenGL без необходимости копирования буферов. Краткое введение в кеши текстур было в сеансе 414 - Достижения в OpenGL ES для iOS 5 на WWDC 2011 .
Я нашел интересную статью , которая в конце концов злоупотребляет этой концепцией и обходит вызов glReadPixels
, просто блокируя текстуру, а затем напрямую обращаясь к буферу.
glReadPixels
работает очень медленно из-за тайлового рендерера, который используется в iPad 2 (даже если вы используете только текстуры 1x1). Однако описанный метод работает быстрее, чем glReadPixels
.
Является ли предложенный в статье метод действительным и можно ли его использовать для ускорения приложений, которые полагаются на glReadPixels
?
Поскольку OpenGL обрабатывает графические данные параллельно с ЦП, как CVPixelBufferLockBaseAddress
узнавать, когда рендеринг выполняется без обращения к OpenGL?