Platform SDK: DirectX

MultiMon システムのデバイスとアクセラレータ

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。

[C++]

フルスクリーン排他モードの DirectDraw オブジェクトは、プライマリ デバイスまたはセカンダリ デバイス上で実行するかどうかにかかわらず、ハードウェア アクセラレータを利用する。ただし、ディスプレイ デバイス全域でグラフィックス オペレーションをスパンするために、ビルトイン サポートを使用できない。適切なデバイスでオペレーションを実行することは、アプリケーションで行う。

標準協調レベルが設定されると、ウィンドウがプライマリ デバイスの全ディスプレイ領域内の場合だけ、DirectDraw はハードウェア アクセラレータを使用する。ウィンドウが 2 つ以上のモニタに不規則に広がる場合、すべてのブリットが列挙され、パフォーマンスがかなり低下する。ハードウェア バッファでは他のハードウェアが制御するディスプレイ サーフェスにブリットできないため、これはやむをえないことである。

ヌル デバイスに対して DirectDraw オブジェクトを作成する限り、NULL が lpGUID パラメータとして DirectDrawCreate に渡される。DirectDraw では、配置されるかどうかにかかわらず全ウィンドウへブリットする。ただし、デバイスが実際の GUID で作成される場合 (クリッパーを使用する場合)、プライマリ サーフェスの縁に交差するブリット オペレーションはクリップされたり、DDERR_INVALIDRECT を返して失敗する。

 :  MultiMon アプリケーションのウィンドウにブリットしている場合、セカンダリ モニタの論理的な位置がプライマリ モニタの左側になると、負の座標が有効となる。

ウィンドウ MultiMon アプリケーションのパフォーマンスを向上させるには、各デバイスに対する DirectDraw を作成し、各デバイスに並行してオフスクリーン サーフェスを維持し、各デバイスに常駐するウィンドウの一部のトラックを保ち、各デバイスへ別々のブリットを実行しなければならない。