W iOS 5 zostały wprowadzone pamięci podręczne OpenGL ES Texture zapewniające bezpośrednią drogę od danych wideo kamery do OpenGL bez potrzeby kopiowania buforów. Wprowadzono krótkie wprowadzenie do pamięci podręcznych tekstury w session 414 - Advances in OpenGL ES for iOS 5 of WWDC 2011.Używanie buforowania tekstur OpenGL ES zamiast glReadPixels w celu uzyskania danych tekstury
Znalazłem interesujący article, który w dalszym ciągu nadużywa tej koncepcji i omija połączenie z glReadPixels
przez proste zablokowanie tekstury, a następnie bezpośredni dostęp do bufora.
glReadPixels
jest bardzo wolny z powodu opartego na kaflu renderera, który jest używany w iPadzie 2 (nawet jeśli używasz tylko tekstur 1x1). Jednak opisana metoda wydaje się działać szybciej niż glReadPixels
.
Czy proponowana metoda w artykule nawet ważne i może być stosowany w celu zwiększenia aplikacji, które opierają się na glReadPixels
?
Ponieważ OpenGL przetwarza dane graficzne równolegle do procesora, jak powinno się znać wywołanie CVPixelBufferLockBaseAddress
, gdy renderowanie odbywa się bez rozmowy z OpenGL?