In che modo Windows Aero impedisce lo strappo dello schermo?


14

Quando Windows Aero è attivo, non vi è alcuna lacerazione dello schermo, al contrario di quando si utilizza il tema Basic senza Aero.

Perché, tuttavia, i giochi con sincronizzazione verticale sembrano avere un ritardo di input molto maggiore rispetto a quando si fa qualcosa sul desktop? Sembra persino di sincronizzare i giochi con finestre con V-sync disattivato, meglio di quanto sarebbero se stessero usando qualsiasi metodo incorporato nel gioco.

Perché e come ciò accade o sembra accadere?

Risposte:


8

In realtà, il motivo per cui Aero può impedire lo strappo senza forzare VSYNC in un'applicazione è perché si tratta di un gestore di finestre di composizione. Disegna il desktop e tutte le finestre in modo asincrono rispetto a qualsiasi applicazione in esecuzione.

Vale a dire, quando si abilita la composizione in Windows Vista / 7 (è sempre abilitata in Windows 8), disegnerà tutte le finestre usando una copia dell'ultima immagine che è stata scambiata da dietro a davanti. Il compositore (Microsoft lo chiama DWM, Desktop Window Manager ) compone tutto con VSYNC abilitato e, poiché disegna usando una copia dell'ultima immagine del buffer anteriore completamente scambiata per ogni finestra, non visualizza mai cornici parzialmente disegnate. Tuttavia, ha uno sfortunato effetto collaterale di impedire che software veramente vecchi progettati per attingere al buffer anteriore funzionino esclusivamente correttamente, ma i software moderni non lo fanno.

In breve, il DWM aggiunge un ulteriore livello di protezione contro lo strappo. Uno che consentirà a qualsiasi applicazione in esecuzione sul sistema di disegnare a una velocità indipendentemente dalla frequenza di aggiornamento del display e prevenire comunque lo strappo. Su un tale sistema, in modalità finestra l'unica cosa che abilita VSYNC in OpenGL o Direct3D è buona è in realtà limitare l'utilizzazione di CPU / GPU.

Questo è il motivo per cui è stato creato VSYNC adattivo, l'idea non è quella di penalizzare le applicazioni che non possono sostenere la frequenza di aggiornamento del display costringendole a un fattore inferiore della frequenza di aggiornamento (ad esempio 60 Hz -> 30, 20, 15, 10, 12 , 6, 5, 4, 3, 2, 1) ma per limitare le applicazioni che disegnano più velocemente del monitor, è possibile visualizzare le immagini dall'uso di una quantità eccessiva di potenza CPU / GPU.


5

Con Aero abilitato, Desktop Window Manager utilizza il doppio buffering :

La funzionalità Windows Aero fa ampio uso del doppio buffering per disegnare sullo schermo.

fonte

Wikipedia ha questo da dire su come viene utilizzato con V-sync per prevenire lo strappo dello schermo:

Durante l'intervallo di blanking verticale, il driver ordina alla scheda video di copiare rapidamente l'area grafica fuori schermo nell'area di visualizzazione attiva (doppio buffering) o di trattare entrambe le aree di memoria come visualizzabili, e di passare semplicemente da una all'altra (pagina flipping).


6
Il doppio buffering non impedisce lo strappo, impedisce all'utente di vedere le cose nel processo di rendering. Se hai un doppio buffer e fai un capovolgimento della pagina nel mezzo di un aggiornamento dello schermo, continui a strappare.
Wyzard,

Ovviamente puoi ancora strappare se sbagli il doppio buffering, ma il punto è che DB può essere usato per prevenire lo strappo.
nitro2k01,

3

Il doppio buffering + V-sync su non provoca strappi. Aero sembra usare quella configurazione.


2

DWM (la tecnologia che abilita l'effetto Aero) esegue il rendering di tutto sullo schermo come superficie D3D (che consente al video di continuare a essere riprodotto su Flip). Questa tecnica di rendering previene automaticamente lo strappo , anche se il metodo di gioco dovrebbe essere migliore del metodo DWM generico (dopo tutto è il loro motore). Quindi è probabile che il metodo di gioco o non sia così buono in primo luogo, o non è stato ottimizzato per la tua configurazione.


2
Di per sé, l'uso di Direct3D non impedisce lo strappo dello schermo. È doppio buffering.
bwDraco,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.