Wie verhindert Windows Aero das Zerreißen des Bildschirms?

14

Wenn Windows Aero aktiviert ist, wird der Bildschirm nicht zerrissen, im Gegensatz zur Verwendung des Basic-Designs ohne Aero.

Warum scheinen Spiele mit vertikaler Synchronisierung eine viel größere Verzögerung bei der Eingabe zu haben, als wenn etwas auf dem Desktop ausgeführt wird? Es scheint sogar, dass Spiele mit Fenster und deaktivierter V-Synchronisierung synchronisiert werden, besser als wenn sie die in das Spiel integrierte Methode verwenden würden.

Warum und wie passiert das oder scheint es zu passieren?

Jason Powers Murray
quelle

Antworten:

8

Der Grund, warum Aero das Aufreißen verhindern kann, ohne VSYNC in einer Anwendung erzwingen zu müssen, liegt darin, dass es sich um einen Compositing-Fenstermanager handelt. Es zeichnet den Desktop und alle Fenster asynchron in Bezug auf eine laufende Anwendung.

Das heißt, wenn Sie Compositing in Windows Vista / 7 aktivieren (es ist in Windows 8 immer aktiviert), werden alle Fenster mit einer Kopie des letzten Bildes gezeichnet, das von hinten nach vorne ausgetauscht wurde. Der Compositor (Microsoft nennt es DWM, Desktop Window Manager ) setzt alles mit aktiviertem VSYNC zusammen. Da beim Zeichnen für jedes Fenster eine Kopie des letzten vollständig ausgelagerten Frontpufferbilds verwendet wird, werden niemals teilweise gezeichnete Rahmen angezeigt. Es hat jedoch den unglücklichen Nebeneffekt, zu verhindern, dass wirklich alte Software, die ausschließlich in den Frontbuffer gezogen wurde, richtig funktioniert - moderne Software tut dies jedoch nicht.

Kurz gesagt, das DWM fügt eine zusätzliche Schutzschicht gegen Zerreißen hinzu. Eine, die es jeder auf dem System ausgeführten Anwendung ermöglicht, unabhängig von der Aktualisierungsrate des Bildschirms mit einer bestimmten Geschwindigkeit zu zeichnen und dennoch ein Zerreißen zu verhindern. Auf einem solchen System kann VSYNC in OpenGL oder Direct3D nur im Fenstermodus aktiviert werden, indem die CPU- / GPU-Auslastung gedrosselt wird.

Aus diesem Grund wurde adaptives VSYNC entwickelt, mit dem Ziel, Anwendungen, die die Aktualisierungsrate des Displays nicht aufrechterhalten können, nicht zu benachteiligen, indem sie in einen niedrigeren Faktor der Aktualisierungsrate gezwungen werden (z. B. 60 Hz -> 30, 20, 15, 10, 12) , 6, 5, 4, 3, 2, 1), aber um Anwendungen einzuschränken, die schneller zeichnen als der Monitor, können Bilder angezeigt werden, wenn zu viel CPU- / GPU-Leistung verbraucht wird.

Andon M. Coleman
quelle
5

Wenn Aero aktiviert ist, verwendet der Desktop Window Manager die doppelte Pufferung :

Die Windows Aero-Funktion nutzt die doppelte Pufferung, um auf dem Bildschirm zu zeichnen.

Quelle

In Wikipedia steht, wie dies mit V-Sync verwendet wird, um Bildschirmrisse zu vermeiden:

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 (Seite) spiegeln).

bwDraco - Setzen Sie Monica wieder ein
quelle
6
Doppelte Pufferung verhindert nicht das Aufreißen, sondern verhindert, dass der Benutzer Dinge sieht, die gerade gerendert werden. Wenn Sie doppelt gepuffert sind und während einer Bildschirmaktualisierung eine Seite umblättern, werden Sie immer noch wütend.
Wyzard
Natürlich können Sie immer noch reißen, wenn Sie die doppelte Pufferung falsch machen, aber der Punkt ist, dass DB verwendet werden kann, um ein Reißen zu verhindern.
nitro2k01
3

Doppelte Pufferung + V-Sync ein führt zu keinem Einreißen. Aero verwendet diese Konfiguration.

DeepSpace101
quelle
2

DWM (die Technologie, die den Aero-Effekt aktiviert) rendert alles auf Ihrem Bildschirm als D3D-Oberfläche (wodurch die Wiedergabe von Videos auf Flip fortgesetzt werden kann). Diese Rendering-Technik verhindert automatisch das Zerreißen , obwohl die Spielmethode besser sein sollte als die generische DWM-Methode (schließlich ist es ihre eigene Engine). Es ist also wahrscheinlich, dass die Spielmethode entweder gar nicht so gut ist oder nicht für Ihre Konfiguration optimiert wurde.

Martheen Cahya Paulo
quelle
2
Durch die Verwendung von Direct3D wird das Aufreißen des Bildschirms nicht verhindert. Es ist eine doppelte Pufferung.
bwDraco - Wiedereinsetzung von Monica