DXGIって何かと言うと、なんぞや?と調べた結果。
参考・参照:http://vplab.snu.ac.kr/lectures/11-1/comp_appl/
DXGIは下記の処理を受け持つインターフェースである。
- ディスプレイ・アダプタおよび出力の抽象化
- スワップ・チェーンの管理
- ウィンドウ・リサイズに関する操作
- 出力およびウィンドウ・サイズの選択
- サーフェース・リソース管理
つまりDXGIはディスプレイ・アダプタからサーフェース(ビデオメモリ・CPUメモリ)までの管理を受け持つ。
Direct3DというAPIが誕生した頃と違って、複数のディスプレイ・アダプタをPCに付けることができたり、ディスプレイ・アダプタ自体も複数の出力ができるようになっているので、そのあたりを管理できるよう抽象化されている。
参照:http://msdn.microsoft.com/dynimg/IC126798.gif
DXGIを使うと生のビデオ・メモリに書き込みができたりする。昔のDirectDrawからビデオ・メモリ転送機能を省いたような感じである。
スワップ・チェーンというのは、要するにフロントバッファとバックバッファのコンテナである。描画は基本的にバック・バッファに対して行われ、描画が完了したらフロントバッファとバックバッファを交換して描画内容を表示する。こうすることで描画時のチラツキをなくすのである。
驚くべきことだが、DXGIではデバイス・ロストが発生しない。またウィンドウがリサイズされてもサーフェースを再作成する必要がない。さらにウィンドウ・モードとフルスクリーン・モードの切り替えもメソッド1個で簡単にできる。昔のDirectDrawでは多少ややこしかったところである。