Die GPU legt fertige Frames in eine Warteschlange und gibt sie im Takt des Monitors aus. Solange sie dort warten, kommt die Eingabe verzögert an.
Warum Grafiktreiber legt vorab 1–3 Frames in die Warteschlange → Folge Bis eine Eingabe auf dem Bildschirm erscheint, dauert es entsprechend länger → Auf dem Bildschirm Ping niedrig, Steuerung trotzdem schwer und träge
Low-Latency-Modus unterstützen, Frame-Warteschlange verkürzen, Option für ein Framelimit knapp unter der Bildwiederholrate anbieten, auf Smartphones Frame-Pacing aktivieren.
Aufgaben Extern
Spielern empfehlen, mit einem Monitor mit variabler Bildwiederholrate ein Framelimit knapp unter der Bildwiederholrate zu setzen und den Low-Latency-Modus im Grafiktreiber einzuschalten.
Größenordnungen
Bei 60 Hz kostet jeder Frame 16,7 ms. Ist die CPU schneller als die GPU oder der Bildwiederholtakt und läuft die Warteschlange mit drei Frames voll (Standard in DirectX 11), kommen 50 ms dazu. Bei V-Sync mit Doppelpufferung wartet ein Frame, der 17 ms gebraucht hat, bis zur nächsten Bildaktualisierung (33,3 ms), und so lange ist der vorige Frame ein zweites Mal zu sehen.
Im Graphen
Von Anfang an dauerhaft hoch · Latenz von der Eingabe bis zur Anzeige
Wo nachsehen
Die PresentMon-Werte MsClickToPhotonLatency und MsAllInputToPhotonLatency (von Maus- oder Tastatureingabe bis zur Ausgabe an den Bildschirm) sowie DisplayLatency bei wechselnden Einstellungen für V-Sync, Low-Latency-Modus und Framelimit vergleichen. MsPCLatency (vom Eingang der Eingabe im PC bis zur Ausgabe an den Bildschirm) wird nur aufgezeichnet, wenn das Spiel PC-Latency-Events ausgibt
Spricht dafür
Mit V-Sync oder ohne Framelimit steigt diese Latenz um ein bis zwei Frames (einige Dutzend ms), mit Low-Latency-Modus oder einem Framelimit knapp unter der Bildwiederholrate sinkt sie. Der Ping bleibt unverändert
Spricht dagegen
Latenz im PC niedrig, Steuerung trotzdem träge: „Latenz von Display, Eingabegeräten und Frame Generation“. Ping hoch: Netzwerkseite
Prüfmittel
Prüfung in der Umgebung des Spielers
Mehr dazu
V-Sync (vertikale Synchronisation) gibt neue Frames nur in dem Moment aus, in dem der Monitor das Bild wechselt. Tearing verschwindet, aber das Warten auf diesen Moment verzögert die Eingabe. Fallen die FPS unter 60, springt die Ausgabe zwischen 60 und 30 hin und her, und das Bild ruckelt. Monitore mit variabler Bildwiederholrate wechseln das Bild dann, wenn ein Frame fertig ist, und verkürzen so diese Wartezeit. Auf Smartphones passiert dasselbe. Gibt ein 30-FPS-Spiel seine Frames auf einem 60-Hz-Display nicht gleichmäßig aus, liegt der Durchschnitt zwar bei 30 FPS, die einzelnen Frames bleiben aber unterschiedlich lange stehen, etwa 49, 16 und 33 ms, und das Bild ruckelt (Beispiel aus der Android-Entwicklerdokumentation). Abhilfe schaffen die Frame-Pacing-Bibliothek von Android (gleichmäßige Abstände bei der Frame-Ausgabe) oder entsprechende Optionen der Engine.
Reduce latency with DXGI 1.3 swap chainsMicrosoft Present blockiert, bis in der Warteschlange Platz ist, sodass zwischen Zeichnen und Anzeige fast ein weiterer Frame Wartezeit entsteht. Eine Waitable Swap Chain verringert das
Frame Pacing libraryAndroid (Google) Liegt auf einem 60-Hz-Display kein neuer Frame vor, wird der vorige erneut angezeigt. Beispiel eines 30-FPS-Spiels mit unregelmäßigen Frametimes wie 49, 16 und 33 ms
PresentMon Capture Application (README-CaptureApplication.md)Intel MsPCLatency (vom Eingang der Eingabe im PC bis zur Ausgabe an den Bildschirm), MsClickToPhotonLatency (Mausklick bis Bildschirm), MsAllInputToPhotonLatency (Tastatur- oder Mauseingabe bis Bildschirm), DisplayLatency (Übergabe des Frames bis zur Ausgabe an den Monitor)