Borderless Window verhindert Tearing ohne V-Sync aber verursacht Mikroruckeln?

PrinceVinc

Lt. Commander
Registriert
Okt. 2014
Beiträge
1.229
Ich spiele gerade AC: Rogue und mir ist etwas aufgefallen:
Ich spiele es im Borderless Window da es ja besser sein soll als Treiber und Ingame V-Sync aber mir ist erst jetzt ein "Problem" damit aufgefallen!

Ich bekomme Mikroruckler! (Ich habe weit mehr als 60FPS)
Hier wird in Englisch genau beschrieben was ich meine, aber leider hat dort niemand geantwortet.
http://www.mmo-champion.com/threads/1885140-Vsync-in-borderless-windowed-mode

Wenn ich Ingame V-Sync einschalte ist das Ruckeln völlig Verschwunden wie kommt das? Was könnte dahinter stecken?
Sollte das mit Borderless Window eigentlich nicht passieren?
 
Wie soll denn ohne Sync Tearing verhindert werden?
 
War es nicht so, dass im Windows Fenstermodus (egal ob mit oder ohne Rand) V-Sync immer an ist? Ah, nein, grad gegoogled , nein, V-Sync off im Desktop funktioniert (als Programmparameter gesetzt). ABER, triple buffer ist dann immer an, weswegen es dann kein tearing mehr gibt. Dieses kannst du auch nicht ausschalten (Vollbildmodus läuft dann unter Direct_X mit nur double buffer).
 
Warum soll WindowMode besser sein als Vsync? Wenn ich es richtig verstanden habe, dann sind das zwei völlig unterschiedliche Dinge und der Fenstermodus ist keine Vsync alternative.

Im Fenstermodus wird ein gerendertes Bild alle ~16,7ms (60Hz) wiedergegeben. Wenn die Bilder konstant mit 80 FPS gerendert werden, dann gibt es schon alle 12,5ms ein neues Bild. Hat dann den Effekt, dass ein paar gerenderte Bilder nie angezeigt werden. Dadurch ist dann der Inhalt der angezeigten Bilder nicht jedesmal 12,5ms auseinander, sonder ab und zu 25ms. Es ruckelt.
 
Ist absolut logisch, dass das passiert. Das Spiel rendert intern dann unabhängig vom Vsync des Desktops. Du erreichst dann z.B. 90 FPS, und Windows versucht dann diese 90 FPS auf 60 Hz aufzuteilen, wodurch Frames einfach verworfen werden. Das führt dazu, dass der Bildinhalt von einem Frame zum anderen nicht mehr zusammenpasst, was wiederum diese Ruckler erzeugt. Im Volldbildmodus mit aktivem Vsync rendert das Spiel maximal 60 FPS (bei nem 60 Hz Monitor) und es werden auch 60 FPS mit dem Monitor synchronisiert ausgegeben. Die Kette von Engine - > Bildausgabe -> Monitor spielt dann perfekt zusammen.

Borderless Window ist nur in wenigen Fällen eine empfehlenswerte Lösung. Es geht nichts über Vollbildmodus + Vsync + TripleBuffering. (Ok, mal abgesehen von G-Sync)
 
Das Problem ist ja, Triple Buffer hat nicht jedes Spiel! Und Ich habe vor kurzem erfahren das RadeonPro und D3DOverrider kein echtes Triple Buffering haben. Aber das ist gut zu wissen woher diese Ruckler kommen, es klingt in jedem fall logisch für mich.

Und der Grund das Ich Borderless Window Spielen möchte ist der, das Aufnahmen mit den zweiten Bildschrim leichter zu machen sind durch die DWM Unterstützung.

Edit: Ich nehme mal an Borderless Window + Ingame V-Sync ergibt nicht Vsync + echtes Triple Buffering? :P
 
Zuletzt bearbeitet:
Doch, rein theoretisch müsste deine letzte Vermutung zutreffend sein, V-Sync durchs Spiel, triple buffer durch WDM.
 
Wirklich? Das wäre ja eine kleine Sensation für mich :)
 
Funktioniert meist so wie von dir beschrieben.

Ich habs zuletzt in Anno 2205 so genutzt. Das Spiel hat das Problem, dass es nur Double Buffering unterstützt, heißt ingame brechen im Vollbildmodus die FPS auf 30, sobald 60 Unterschritten werden (wenn Vsync aktiv).
Workaround war der Borderless Window Mode, so hatte ich Triple Buffering. Dann hatte ich aber das selbe Microruckeln wie du es jetzt beschrieben hast, da das Spiel dann intern ohne Vsync rendert und Vsync nur über den Windows Desktop gesteuert wird (frames werden ausgelasssen -> Microruckler).
Das Aktivieren von ingame Vsync hat dann die Microruckler wieder beseitigt.

Blöd ist nur, dass viele Spiele die Vsync option ausgrauen bzw. deaktivieren, sobald irgend ein Fenstermodus genutzt wird.
 
Zuletzt bearbeitet von einem Moderator:
Das habe ich bisher noch nicht gesehen, aber gut zu wissen, Danke :)
 
Zurück
Oben