Was heißt "VSync" - und wie wendet man es an?

Freitag, 12. März 2004
 / von aths
 

VSync, Triple Buffer, Prerender Limit: Was heißt das konkret? Dies soll heute unser Thema sein.

VSync ist die Abkürzung für "Vertical Synchronization". Um zu verstehen, was damit gemeint ist, muss man die Arbeitsweise des Monitors kennen. Auf der Grafikkarte gibt es einen so genannten RAMDAC. Das ist der RAM Digital-Analog-Converter. Dieser Baustein (der seit längerem direkt in der GPU integriert ist) liest den Grafikkarten-Framebuffer aus und wandelt die dortigen Farbwerte in ein analoges Signal um. Die Auslesegeschwindigkeit beim "Scanout" hängt direkt von der Monitorfrequenz ab. Angenommen, wir fahren die Auflösung 1024x768 bei 85 Hz. Dann hat man pro Bild 1/85-tel Sekunde Zeit. In dieser Zeit sind 768 Zeilen zu lesen.

Pro Zeile werden 1024 Pixel aus dem Grafikkarten-RAM vom RAMDAC eingelesen und in ein analoges Signal gewandelt. Die Zeile wird vom Röhrenmonitor mittels einem Kathodenstrahl aufgebaut. Am Ende der Röhre befindet sich eine Kathode, dort werden Elektronen freigesetzt und mit Hilfe von Elektromagneten beschleunigt. Durch elektrisch gesteuerten Magnetismus kann der Strahl von der Steuerlogik im Monitor abgelenkt werden.

Der aus Elektronen bestehende Kathodenstrahl wird nun so geführt, dass er die erste Zeile abstreift. Die jeweilige Stärke des Strahls hängt vom Signal ab, welches am Monitor anliegt. Genau dieses Signal erzeugt der RAMDAC aus dem Framebuffer. Der Kathodenstrahl regt die Leuchtschicht der Röhre an. Die Elektronen schießen dabei nicht etwa durch, sondern die Schicht sendet Photonen aus – also Licht. Das Leuchten nimmt unser Auge wahr – und wir sehen schließlich etwas auf dem Monitor.

Wenn der Strahl die erste Zeile abgefahren hat, schaltet der Monitor ihn ab. Die Elektromagneten in der Röhre fahren die Position an den Anfang der nächsten Zeile. Der Strahl wird wieder aktiviert, und er überstreicht die nächste Zeile. Das geht bis zum Ende der letzten Zeile. Dort angelangt, wird der Strahl abgeschaltet und an den Anfang der obersten Zeile positioniert, um das nächste Bild aufzubauen.

Der Monitor schickt den Strahl für jede Zeile von links nach rechts und pro Zeile ein Stücken weiter nach unten. Kennt man die Zeilenfrequenz eines Monitors, kann man zurückzurechnen, welche Wiederholrate er bei einer gegebenen Auflösung schafft. Angenommen, wir wollen 1024x768 fahren. Die 768 multiplizieren wir mit 1,1 (stark vereinfacht gesagt sind die 10% für unsichtbare Zeilen). Wir haben also rund 845 "effektive" Zeilen pro Bild, von denen aber nur 768 wirklich nutzbar sind. 100 kHz Zeilenfrequenz entsprechen 100000 Hz. Die Rechnung lautet damit 100000 / 845. Als Ergebnis bekommt man 118 Hz Bild-Frequenz. Mit etwas Quälerei wären 120 Hz drin, aber es wird empfohlen, einen Monitor nur zu 85% auszunutzen. Wir kommen dann auf ziemlich genau 100 Hz als optimalen Wert für unser Beispiel.