Ich versuche, nach Szenarien zu suchen, in denen Sync-Objekte in OpenGL verwendet werden können. Mein Verständnis ist, dass ein Sync-Objekt, das einmal in den GL-Befehlsstrom (unter Verwendung von glFenceSync ()) gesetzt wird, signalisiert wird, nachdem alle GL-Befehle ausgeführt und realisiert wurden. Wenn die Synchronisationsobjekte Synchronisierungsgrundelemente sind, warum können wir sie dann MANUELL nicht signalisieren? Wo genau kann diese Funktionalität dem GL-Programmierer helfen?
Ist das folgende Szenario korrekt?
%Vor%Bedeutet dies, dass ich Thread 2 nicht starten kann, wenn nicht glFenceSync () in Thread 1 aufgerufen wird?
Zäune sind nicht so sehr zum Synchronisieren von Threads gedacht, sondern um zu wissen, wann asynchrone Operationen beendet sind. Wenn Sie beispielsweise ein glReadPixels
in ein Pixel-Pufferobjekt (PBO) eingeben, möchten Sie vielleicht wissen, dass das Lesen abgeschlossen wurde, bevor Sie versuchen, das PBO in den Clientadressraum einzulesen oder zu mappen.
Wenn Sie ein glReadPixels
mit einem PBO als Ziel verwenden, wird der Aufruf sofort zurückgegeben, aber die Datenübertragung kann tatsächlich etwas dauern. Hier kommen Zäune zum Einsatz.
Tags und Links opengl synchronization opengl-3