Wie warte ich auf VSYNC in der Xlib App?

9

Ich zeichne etwas mit XWindow Drawable, Pixmap und XRender auf dem Bildschirm. Ich kann sehen, dass manchmal Flimmern ist. Gibt es eine Möglichkeit, auf VBLANK zu warten? Ich habe schon viel gegoogelt, hab Lust auf eine Münze in einem Wald.

Es ist KEIN OpenGL beteiligt. Es ist Linux (Ubuntu). Ich könnte (nano) sleep () verwenden, muss aber wissen, wann die Zeit zum Zeichnen gekommen ist, wie es geht.

    
exebook 16.05.2015, 15:46
quelle

1 Antwort

3

Ich finde die bei weitem einfachste Lösung ist GLX wegen seiner exzellenten High-Level-Schnittstelle in Richtung Synchronisation und Doppelpufferung. Bitte beachten Sie, dass GLX nicht OpenGL ist, sondern eine X-Erweiterung. Du brauchst einen Dummy-OpenGL-Kontext als SwapBuffers (aus irgendeinem Grund), aber das war's.

Wenn Sie aus irgendeinem Grund ohne GLX arbeiten möchten, können Sie dies tun, indem Sie doppelte Puffer durch X Double Buffer Extension (DBE) erstellen und manuell mit der X Syncronization Extension in Richtung Anzeige synchronisieren. Ich habe es selbst nicht getan, aber Sie sollten in der Lage sein, etwas nach Ihren Wünschen zu finden, das XSyncListSystemCounters aufruft (nach richtiger Initialisierung!):

  

XSyncListSystemCounters gibt einen Zeiger auf ein Array von Systemzählern zurück, die von der Anzeige

unterstützt werden

Ich kann allerdings nicht viel mehr über den harten Weg finden. Viel Glück.

    
Andreas 27.07.2016 12:46
quelle

Tags und Links