OpenGL verwendet Shader, um RGBA in NV21 zu implementieren (mit Quellcode)

Ich habe bereits einen Artikel über die Verwendung eines Shaders zum Konvertieren von RGBA in YUYV in OpenGL geschrieben. Mehrere Leser haben vorgeschlagen, einen Artikel über die Verwendung eines Shaders zum Konvertieren von RGBA in NV21 im Hintergrund zu schreiben. Da in der Praxis das NV21-Format häufiger verwendet wird, ist dies der Fall Ich werde diesen Artikel heute schreiben. Veröffentlichen Sie einen Artikel.

Informationen zu YUV-Bildern und Bildbetrachtungstools finden Sie im folgenden Push. Ich werde in diesem Artikel nicht näher darauf eingehen.

Beherrschen Sie die grundlegende Verarbeitung von YUV-Bildern in einem Artikel

Shader erkennt die Vorteile der Konvertierung von RGBA in NV21

Nachdem OpenGL das Rendern des Bildes abgeschlossen hat, ist es in vielen Fällen erforderlich, das gerenderte Bild zur weiteren Verarbeitung in den Speicher einzulesen. Derzeit führt die Verwendung von glReadPixels zum direkten Lesen hochauflösender Bilder (RGBA) häufig zu Leistungsproblemen, insbesondere bei Videos Verarbeitung oder Kameravorschau von Szenen.

Zu diesem Zeitpunkt können Sie die Verwendung von PBO, HardwareBuffer, ImageReader usw. in Betracht ziehen. Weitere Informationen finden Sie unter Welcher OpenGL-Bildreader ist besser? Ein Artikel.

Obwohl die oben genannten Methoden das Leistungsproblem beim Lesen großer Bilder bis zu einem gewissen Grad lösen können, bringen sie auch eine hohe Implementierungskomplexität und Kompatibilitätsprobleme mit sich. Beispielsweise erfordert HardwareBuffer Android 26 oder höher.

Wenn das Lesen sehr großer Bilder nicht erforderlich ist, entscheiden wir uns im Allgemeinen für die Verwendung von Shader zum Konvertieren von RGBA in YUV, wodurch die Menge der übertragenen Daten effektiv reduziert werden kann, wenn glReadPixels zum Lesen des Bildes verwendet wird.

Je suppose que tu aimes

Origine blog.csdn.net/Kennethdroid/article/details/132055489
conseillé
Classement