In iOS 5, sono state introdotte le cache Texture OpenGL per fornire una via diretta dai dati video della videocamera a OpenGL senza la necessità di copiare i buffer. C'è stata una breve introduzione alle cache delle texture in session 414 - Advances in OpenGL ES for iOS 5 of WWDC 2011.Utilizzo di cache texture OpenGL anziché glReadPixels per ottenere dati di texture
Ho trovato un interessante article che abusa ulteriormente questo concetto alla fine e aggira una chiamata a glReadPixels
semplicemente bloccando la trama e quindi accedendo direttamente al buffer.
glReadPixels
è molto lento a causa del renderer basato su tile che viene utilizzato in iPad 2 (anche quando si utilizzano solo texture 1x1). Tuttavia, il metodo descritto sembra elaborare più rapidamente di glReadPixels
.
Il metodo proposto nell'articolo è valido e può essere utilizzato per aumentare le applicazioni che si basano su glReadPixels
?
Poiché OpenGL elabora i dati grafici in parallelo alla CPU, come deve essere la chiamata CVPixelBufferLockBaseAddress
quando il rendering viene eseguito senza parlare con OpenGL?