Como o Windows Aero impede o rasgo da tela?


14

Quando o Windows Aero está ativado, não há rasgo na tela, ao contrário do uso do tema Básico sem o Aero.

Por que, no entanto, jogos com sincronização vertical parecem ter um atraso de entrada muito maior do que quando se faz algo na área de trabalho? Parece até sincronizar jogos com janelas com V-sync desativado, melhor do que seria se eles estivessem usando qualquer método incorporado ao jogo.

Por que e como isso acontece ou parece acontecer?

Respostas:


8

Na verdade, a razão pela qual o Aero pode impedir o rasgo sem precisar forçar o VSYNC em um aplicativo é porque é um gerenciador de janelas de composição. Ele desenha a área de trabalho e todas as janelas de forma assíncrona em relação a qualquer aplicativo em execução.

Ou seja, quando você habilita a composição no Windows Vista / 7 ( sempre habilitada no Windows 8), ele desenha todas as janelas usando uma cópia da última imagem que foi trocada de trás para frente. O compositor (a Microsoft chama DWM, Desktop Window Manager ) compõe tudo com o VSYNC ativado e, porque desenha usando uma cópia da última imagem do buffer frontal totalmente trocado para cada janela, nunca exibe quadros parcialmente desenhados. No entanto, ele tem um efeito colateral lamentável de impedir que softwares realmente antigos, projetados para atrair o buffer frontal exclusivamente funcionem corretamente - mas o software moderno não faz isso.

Em poucas palavras, o DWM adiciona uma camada adicional de proteção contra rasgos. Um que permita que qualquer aplicativo em execução no sistema seja desenhado a uma taxa independentemente da taxa de atualização da tela e ainda evite rasgos. Nesse sistema, no modo de janela, a única coisa que habilita o VSYNC no OpenGL ou Direct3D é boa: na verdade, está impedindo a utilização da CPU / GPU.

É por isso que o VSYNC adaptativo foi criado, a idéia de que não há como penalizar aplicativos que não podem sustentar a taxa de atualização da tela, forçando-os a um fator mais baixo da taxa de atualização (por exemplo, 60 Hz -> 30, 20, 15, 10, 12 , 6, 5, 4, 3, 2, 1), mas para limitar os aplicativos que estão desenhando mais rápido que o monitor, as imagens podem ser exibidas usando uma quantidade excessiva de energia da CPU / GPU.


5

Com o Aero ativado, o Desktop Window Manager usa buffer duplo :

O recurso Windows Aero faz uso extensivo de buffer duplo para desenhar na tela.

Fonte

A Wikipedia tem a dizer sobre como isso é usado com o V-sync para evitar rasgar a tela:

Durante o intervalo de apagamento vertical, o driver solicita que a placa de vídeo copie rapidamente a área de gráficos fora da tela para a área de exibição ativa (buffer duplo) ou trate ambas as áreas de memória como exibíveis e simplesmente alterne entre elas (página lançando).


6
O buffer duplo não impede rasgar, impede que o usuário veja coisas no processo de renderização. Se você recebe buffer duplo e inverte a página no meio de uma atualização de tela, ainda fica rasgando.
wyzard --stop Prejudicar Monica--

É claro que você ainda pode rasgar se fizer um buffer duplo errado, mas o ponto é que o DB pode ser usado para evitar rasgos.
Nitro2k01

3

O buffer duplo + sincronização V resulta em não rasgamento. O Aero usa essa configuração.


2

O DWM (a tecnologia que habilita o efeito Aero) processa tudo na tela como uma superfície D3D (que possibilita que o vídeo continue reproduzindo no Flip). Essa técnica de renderização evita rasgos automaticamente , embora o método do jogo deva ser melhor que o método DWM genérico (afinal, é o próprio mecanismo). Portanto, é provável que o método do jogo não seja tão bom em primeiro lugar ou não tenha sido otimizado para sua configuração.


2
Por si só, o uso do Direct3D não impede o rasgo da tela. É um buffer duplo.
bwDraco
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.