Platform SDK: DirectX |
単にオーバーレイと呼ばれるオーバーレイ サーフェスは、ハードウェアによりサポートされた特殊な能力を持つサーフェスである。オーバーレイ サーフェスは、プライマリ サーフェスにブリットしたりプライマリ サーフェスのコンテンツを変更せずに、ライブ ビデオや録画ビデオ、あるいは静止ビットマップをプライマリ サーフェス上に表示するためによく使われる。オーバーレイ サーフェスのサポートは、ハードウェアだけで提供される。DirectDraw は、ディスプレイ デバイス ドライバが報告する任意の能力をサポートする。DirectDraw は、オーバーレイ サーフェスをエミュレートしない。
オーバーレイ サーフェスは、描画したりモニタの前に配置する透明なプラスティック片に似ている。オーバーレイがモニタの前にあると、オーバーレイとプライマリ サーフェスのコンテンツを共に見ることができる。オーバーレイを削除しても、プライマリ サーフェスのコンテンツは変わらない。実際、オーバーレイの機構は、透明なプラスティックと非常によく似た動作である。オーバーレイ サーフェスを表示すると、それをどこにどのように表示するかをデバイス ドライバに伝えていることになる。ディスプレイ デバイスがモニタに走査線を描いている間、プライマリ サーフェスの各ピクセルの位置を調べて、その位置でオーバーレイを表示すべきかどうかを調べる。表示するときは、ディスプレイ デバイスが、対応するピクセルをオーバーレイ サーフェスのデータで置き換える。次にこの図を示す。
ディスプレイ アダプタはこの方法を使用して、モニタ上にプライマリ サーフェスとオーバーレイの合成画を作成し、どちらのサーフェスのコンテンツを変更することなく、透過性と伸縮エフェクトを提供する。合成されたサーフェスはビデオ ストリームに挿入され、モニタに直接送られる。この高速処理とピクセル置換はハードウェアレベルで処理されるため、オーバーレイを表示するときに著しいパフォーマンスの低下は見られない。さらに、この方法は、異なるピルセル フォーマットのあるプライマリ サーフェスとオーバーレイ サーフェスを継ぎ目なく合成することもできる。
オーバーレイ サーフェスを作成するには、関連付けられた DDSCAPS2 構造体に DDSCAPS_OVERLAY フラグを指定し、IDirectDraw7::CreateSurface メソッドを呼び出す。オーバーレイ サーフェスはビデオ メモリだけに作成することができるため、DDSCAPS_VIDEOMEMORY フラグも含めなくてはならない。他のタイプのサーフェスと同様、該当するフラグを含めることで、単一オーバーレイまたは複数のオーバーレイ サーフェスからなるフリッピング チェーンを作成することができる。
オーバーレイ サーフェスを作成するには、関連付けられた DDSCAPS2 型に DDSCAPS_OVERLAY フラグを指定し、DirectDraw7.CreateSurface メソッドを呼び出す。オーバーレイ サーフェスはビデオ メモリだけに作成することができるため、DDSCAPS_VIDEOMEMORY フラグも含めなくてはならない。他のタイプのサーフェスと同様、該当するフラグを含めることで、単一オーバーレイまたは複数のオーバーレイ サーフェスからなるフリッピング チェーンを作成することができる。