Ist es möglich, Kamera in Openles 2.0 mit erzwungener Verzögerung zu rendern? Zum Beispiel ist die Verzögerung 5 Frames? Zur Zeit rendere ich Ausgabe mit Oberflächentextur und opengles-2.0.rendern Kamera in Openles 2.0 mit erzwungener Verzögerung
Antwort
Wenn Sie 30 Bilder pro Sekunde empfangen und eine konstante Verzögerung von 5 Bildern einführen möchten, müssen Sie mit diesen 5 Bildern etwas tun.
SurfaceTexture macht nicht (viel) Pufferung. Da die Producer- und Consumer-Endpunkte sich im selben Prozess befinden, wäre es sehr einfach, einen Deadlock durch Überlaufen des Konsumenten zu verursachen. So verwendet SurfaceTexture eine BufferQueue im "async" -Modus, was bedeutet, dass Frames gelöscht werden, wenn der Konsument nicht bereit für den nächsten ist.
Sie benötigen also eine Möglichkeit, Ihre eigenen Pufferung durchzuführen, das heißt, die Daten aus der "externen" Textur zu kopieren. Eine Möglichkeit besteht darin, die Texturen in eine Reihe von FBOs zu rendern, aus denen Sie später rendern können. Achten Sie darauf, die Speicherbelegung im Auge zu behalten - ein ARB-Bild mit einer Auflösung von 1920 x 1080 (32 Bit) belegt etwa 8 MB, so dass 5 Speicherplätze um 40 MB vergrößert werden.
Es kann zu einem gewissen Verlust der Farbtreue kommen, da eine YUV-zu-RGB-Umwandlung beteiligt sein wird, aber wenn Ihr eventuelles Ziel RGB ist, sollte dies keine Rolle spielen.
So ist es möglich, aber es ist nicht einfach. Was versuchst du zu erreichen?
Ich versuche, Render-Verzögerung auf die Verzögerung der Bibliothek für AR tun (Es funktioniert mit fester Verzögerung) – user1730694