ich hab irgendwo gelesen, das es ja möglich ist gleichzeitig mit 2 Renderkontexten zu arbeiten, sodass beide ihre Daten sharen. Da ich in einem Teil meiner software Videos nutze, d.h. ich zeige AVI Files auf Texturen, habe ich mir gedacht das man das Laden des Frames auslagern könnte. Problem ist nämlich das dekomprimieren des AVI Frames und dann das kopieren in die Textur. Das Funktioniert mit einem kleinen AVI sehr gut, doch wenns 3-4 Videos is der MainThread nur noch am ruckeln. Nun wollte ich gerne die Performance nicht abhängig vom Video machen. Wäre es also möglich in einem separaten Thread, oder auch mehrere, die Videos in die Textur zu laden und parallel im Mainthread zu rendern?
Wenn ja, worauf muss ich achten und wie funktioniert das praktisch?
Ich würde empfehlen, die Videos in ein Threadpool zu decoden, die fertigen frames in dem Manager für das Video decoding zurück liefern und dann abhängig von dem gewollten verhalten(verwerfen,zurück halten oder sofort raus schicken) es an den renderthread geben. Der Renderthread sollte PBO mit async upload verwenden, dass um einiges flinker, da es nicht blockt aber kann eventuell erst einige Frames später ankommen, daher sollte man es so früh wie irgends möglich abschicken.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Noch ein kleiner Zusatz: -Du solltest auch noch unbedingt sicherstellen das du Fiber benutzt. -Eventuell könnte es je nach Kodierung auch effizienter sein einzelne Quads mit den Änderungen zu zeichnen (natülich glClear dann entsprechend anpassen usw)
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.