web-dev-qa-db-ja.com

Windows Aeroは画面のちらつきをどのように防止しますか?

Windows Aeroがオンの場合、AeroなしでBasicテーマを使用する場合とは異なり、画面がちらつくことはありません。

しかし、垂直同期を使用するゲームは、デスクトップで何かを行う場合よりも入力ラグがはるかに大きいように見えるのはなぜですか? V-syncがオフのウィンドウゲームを同期するように見えますが、ゲームに組み込まれている方法を使用している場合よりも優れています。

なぜ、どのようにこれが発生するのか、または発生しているように見えますか?

16
Nora Powers

実際、AeroがアプリケーションでVSYNCをオンにせずにティアリングを防ぐことができる理由は、それが合成ウィンドウマネージャーであるためです。デスクトップとすべてのウィンドウを、実行中のアプリケーションに対して非同期に描画します。

つまり、Windows Vista/7で合成を有効にすると(それはalways Windows 8では有効です)、後ろから前にスワップされた最後の画像のコピーを使用してすべてのウィンドウを描画します。コンポジター(MicrosoftはこれをDWMと呼びますデスクトップウィンドウマネージャー)は、VSYNCを有効にしてすべてを合成します。これは、最後のコピーを使用して描画するためです完全にswapped各ウィンドウのフロントバッファイメージは部分的に描画されたフレームを表示しません。ただし、フロントバッファにのみ描画するように設計された非常に古いソフトウェアが正しく動作しないようにするという残念な副作用があります-しかし、最新のソフトウェアはこれをしないでください。

簡単に言えば、DWMはティアリングに対する追加の保護層を追加します。システム上で実行されているすべてのアプリケーションが、ディスプレイのリフレッシュレートに関係なく一定の速度で描画できるようにし、ティアリングを防止します。このようなシステムでは、ウィンドウモードでVSYNCをOpenGLまたはDirect3Dで有効にできるのは、実際にCPU/GPU使用率を抑制することだけです。

これが、適応VSYNC=が作成された理由です。ディスプレイのリフレッシュレートを維持できないアプリケーションをリフレッシュレートの低いファクタ(たとえば60 Hz-> 30、20、15、10、12、6、5、4、3、2、1)ですが、モニターがCPU/GPUパワーを過剰に使用して画像を表示できるよりも速く描画しているアプリケーションを制限します。

10

Aeroを有効にすると、デスクトップウィンドウマネージャーは ダブルバッファリング を使用します。

Windows Aero機能は、画面に描画するためにダブルバッファリングを多用します。

ソース

Wikipedia は、これがV-syncでどのように使用され、画面のティアリングを防ぐかについて述べています。

垂直ブランキング期間中、ドライバーはビデオカードに、オフスクリーングラフィック領域をアクティブな表示領域にすばやくコピーするか(ダブルバッファリング)、または両方のメモリ領域を表示可能として扱い、それらの間を単に切り替える(ページフリッピング)。

5
bwDraco

ダブルバッファリング+ V-syncをオンにすると、ティアリングは発生しません。 Aeroはたまたまその構成を使用します。

4
DeepSpace101

DWM(Aero効果を有効にするテクノロジ)は、画面のすべてをD3Dサーフェスとしてレンダリングします(これにより、ビデオをフリップで再生し続けることができます)。このレンダリング手法は自動的に tearing を防止しますが、ゲームメソッドは一般的なDWMメソッドよりも優れているはずです(結局、それは独自のエンジンです)。したがって、ゲームの方法はそもそもそれほど良くないか、構成に最適化されていない可能性があります。