Direct3D アプリケーションのパフォーマンスは、ウィンドウ モードと比較してフル スクリーン モードの方が大幅に優れているようです。この背後にある技術的な理由は何ですか?
フルスクリーンアプリケーションがディスプレイを排他的に制御できるという事実と関係があると思います。しかし、アプリケーションが画面の一部(ウィンドウなど) を排他的に制御できず、同じパフォーマンス上のメリットを得られないのはなぜでしょうか?
Direct3D アプリケーションのパフォーマンスは、ウィンドウ モードと比較してフル スクリーン モードの方が大幅に優れているようです。この背後にある技術的な理由は何ですか?
フルスクリーンアプリケーションがディスプレイを排他的に制御できるという事実と関係があると思います。しかし、アプリケーションが画面の一部(ウィンドウなど) を排他的に制御できず、同じパフォーマンス上のメリットを得られないのはなぜでしょうか?
MSDNには、ブリッティングではなく、正しく設定されていれば、フル スクリーン モードではバッファ フリッピングが使用されると書かれています。それは理にかなっている。
もちろん、画面の一部をアプリケーションに排他的に制御させることはできます (ある意味ではそうしています) が、画面の残りの部分はどうなるでしょうか? 残りのウィンドウでブリット、オクルージョン チェックなどを行う必要があり、それがパフォーマンス ヒットの原因だと思います。
画面の残りの部分はOSによって管理されているという@aibの回答に追加します。そのため、他の何かを同時に描画/処理する必要がある場合は、パフォーマンス ヒットが発生する必要があります。
たとえば、あるウィンドウで Windows Media Player でビデオを再生していて、別のウィンドウで Civilization を開始した場合、Civ が派手なグラフィックスを開始すると、画面スペースを他のすべてのもの (ビデオなど) と共有する必要があります。
一方、DirectX アプリが全画面表示の場合、他のすべては "更新" または "再生" されている可能性がありますが、描画されていません。
基本的に、ビデオ ハードウェアは排他モード アプリケーション専用です。
ビデオ リソース (パイプライン、テクスチャ メモリなど) の競合はありません。
特に、テクスチャのアップロードは大きなボトルネックになる可能性があります。あなたがそれをしなければならないことが少ないほど(あなたはそれをすべて持っているので)、より良い.