Wie verhindert Windows Aero Screen Tearing?

Wie verhindert Windows Aero Screen Tearing?

Wenn Windows Aero eingeschaltet ist, kommt es im Gegensatz zur Verwendung des Basic-Designs ohne Aero zu keinem Screen Tearing.

Warum aber haben Spiele mit vertikaler Synchronisierung eine viel größere Eingabeverzögerung als Spiele auf dem Desktop? Sogar Spiele im Fenstermodus mit deaktivierter vertikaler Synchronisierung scheinen besser zu synchronisieren, als wenn sie die im Spiel integrierte Methode verwenden würden.

Warum und wie geschieht dies oder scheint dies zu geschehen?

Antwort1

Aero kann tatsächlich Tearing verhindern, ohne VSYNC in einer Anwendung erzwingen zu müssen, weil es ein Compositing-Fenstermanager ist. Es zeichnet den Desktop und alle Fenster asynchron zu jeder laufenden Anwendung.

Das heißt, wenn Sie Compositing in Windows Vista / 7 aktivieren (es iststetsaktiviert in Windows 8), werden alle Fenster mit einer Kopie des letzten Bildes gezeichnet, das von hinten nach vorne getauscht wurde. Der Compositor (Microsoft nennt ihn DWM,Desktopfenster-Manager) fügt alles mit aktiviertem VSYNC zusammen, und da es mit einer Kopie des letztenvoll getauschtFrontpufferbild für jedes Fenster zeigt es niemals teilweise gezeichnete Frames an. Es hat jedoch den unglücklichen Nebeneffekt, dass wirklich alte Software, die ausschließlich zum Zeichnen in den Frontpuffer entwickelt wurde, nicht richtig funktioniert - moderne Software tut dies jedoch nicht.

Kurz gesagt fügt das DWM eine zusätzliche Schutzschicht gegen Tearing hinzu. Eine, die es jeder auf dem System laufenden Anwendung ermöglicht, unabhängig von der Bildwiederholfrequenz des Displays mit einer Geschwindigkeit zu zeichnen und Tearing trotzdem zu verhindern. Auf einem solchen System ist im Fenstermodus das Aktivieren von VSYNC in OpenGL oder Direct3D eigentlich nur dazu gut, die CPU-/GPU-Auslastung zu drosseln.

Aus diesem Grund wurde das adaptive VSYNC entwickelt. Die Idee dahinter ist nicht, Anwendungen, die die Bildwiederholfrequenz des Displays nicht aufrechterhalten können, dadurch zu bestrafen, dass man sie zu einem niedrigeren Faktor der Bildwiederholfrequenz zwingt (z. B. 60 Hz --> 30, 20, 15, 10, 12, 6, 5, 4, 3, 2, 1), sondern zu verhindern, dass Anwendungen, die schneller zeichnen, als der Monitor Bilder anzeigen kann, zu viel CPU-/GPU-Leistung verbrauchen.

Antwort2

Wenn Aero aktiviert ist, verwendet der Desktop Window ManagerDoppelte Pufferung:

Die Windows Aero-Funktion nutzt zum Zeichnen auf dem Bildschirm in großem Umfang die Doppelpufferung.

Quelle

Wikipediahat Folgendes dazu zu sagen, wie dies mit V-Sync verwendet wird, um ein Zerreißen des Bildschirms zu verhindern:

Während des vertikalen Austastintervalls weist der Treiber die Grafikkarte an, entweder den Grafikbereich außerhalb des Bildschirms schnell in den aktiven Anzeigebereich zu kopieren (Doppelpufferung) oder beide Speicherbereiche als anzeigbar zu behandeln und einfach zwischen ihnen hin und her zu wechseln (Seitenumblättern).

Antwort3

Doppelpufferung + V-Sync aktiviert führt zu keinem Tearing. Aero verwendet zufällig diese Konfiguration.

Antwort4

DWM (die Technologie, die den Aero-Effekt ermöglicht) rendert alles auf Ihrem Bildschirm als D3D-Oberfläche (was es ermöglicht, dass Videos auf Flip weiter abgespielt werden). Diese Rendering-Technik verhindert automatischreißen, obwohl die Spielmethode besser sein sollte als die generische DWM-Methode (es ist schließlich ihre eigene Engine). Daher ist die Spielmethode wahrscheinlich entweder von vornherein nicht so gut oder wurde nicht für Ihre Konfiguration optimiert.

verwandte Informationen