2013-02-28 5 views
8

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 Synchronisationselemente sind, warum können wir sie dann nicht MANUELL signalisieren? Wo genau kann diese Funktionalität dem GL-Programmierer helfen?Verwenden von Zaunsynchronisationsobjekte in OpenGL

Ist das folgende Szenario korrekt?

Thread 1 : 

Load model 
Draw() 
glFenceSync() 

Thread 2 : 

glWaitSync(); 
ReadPixels 
Use data for subsequent operation. 

Bedeutet dies, dass ich nicht in Thread 2, es sei denn glFenceSync() Thread 1 genannt wird, starten kann?

+2

"* Bedeutet das, dass ich Thread 2 nicht starten kann, wenn nicht glFenceSync() in Thread 1 aufgerufen wird? *" Nun, bis Sie 'glFenceSync' aufrufen, ist das Sync-Objekt noch nicht vorhanden. Sie können nicht auf etwas warten, das nicht existiert. –

Antwort

8

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) einfügen, möchten Sie möglicherweise wissen, dass das Lesen abgeschlossen wurde, bevor Sie versuchen, PBO in den Clientadressraum einzulesen oder zuzuordnen.

Wenn Sie eine glReadPixels mit einem PBO als Ziel verwenden, wird der Anruf sofort zurückgegeben, aber die Datenübertragung kann tatsächlich einige Zeit dauern. Hier kommen Zäune zum Einsatz.

+0

Ich habe eine Situation, in der ich in einem Thread in einen FBO zeichne und dann von der Farbanhangstextur auf einen Bildschirm in einem anderen Thread rendere (und einen Zaun kreiere, um zu wissen, wann das Rendering abgeschlossen ist). Wenn ein neuer FBO verfügbar ist, gebe ich den alten FBO und den Zaun an den FBO-Manager zurück, so dass er den Zaun abfragen kann und weiß, dass der FBO wieder zum Schreiben verfügbar ist. – Jherico

Verwandte Themen