Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。
フルスクリーン排他モードの DirectDraw オブジェクトは、プライマリ デバイスまたはセカンダリ デバイス上で実行するかどうかにかかわらず、ハードウェア アクセラレータを利用する。ただし、ディスプレイ デバイス全域でグラフィックス オペレーションをスパンするために、ビルトイン サポートを使用できない。適切なデバイスでオペレーションを実行することは、アプリケーションで行う。
標準協調レベルが設定されると、ウィンドウがプライマリ デバイスの全ディスプレイ領域内の場合だけ、DirectDraw はハードウェア アクセラレータを使用する。ウィンドウが 2 つ以上のモニタに不規則に広がる場合、すべてのブリットが列挙され、パフォーマンスがかなり低下する。ハードウェア バッファでは他のハードウェアが制御するディスプレイ サーフェスにブリットできないため、これはやむをえないことである。
ヌル デバイスに対して DirectDraw オブジェクトを作成する限り、NULL が lpGUID パラメータとして DirectDrawCreate に渡される。DirectDraw では、配置されるかどうかにかかわらず全ウィンドウへブリットする。ただし、デバイスが実際の GUID で作成される場合 (クリッパーを使用する場合)、プライマリ サーフェスの縁に交差するブリット オペレーションはクリップされたり、DDERR_INVALIDRECT を返して失敗する。
注 : MultiMon アプリケーションのウィンドウにブリットしている場合、セカンダリ モニタの論理的な位置がプライマリ モニタの左側になると、負の座標が有効となる。
ウィンドウ MultiMon アプリケーションのパフォーマンスを向上させるには、各デバイスに対する DirectDraw を作成し、各デバイスに並行してオフスクリーン サーフェスを維持し、各デバイスに常駐するウィンドウの一部のトラックを保ち、各デバイスへ別々のブリットを実行しなければならない。