Platform SDK: DirectX |
DirectDrawSurface オブジェクトはサーフェスを表す。通常、サーフェスはディスプレイ メモリに常駐するが、ディスプレイ メモリが満杯であったり明示的に要求される場合には、システム メモリに存在させることができる。
1 つのサーフェスを作成したり、同時に複数のサーフェス (複合サーフェス) を作成するには、IDirectDraw7::CreateSurface メソッドを使う。CreateSurface を呼び出す場合、サーフェスのディメンジョンを指定する。このディメンジョンでは、サーフェスが単一サーフェスであるか複合サーフェスであるか、およびピクセル フォーマット (サーフェスがインデックス パレットを使用しない場合) を示す。これらすべての特性は DDSURFACEDESC2 構造体に含まれており、そのアドレスは呼び出し時に送る。ハードウェアが要求された能力をサポートできなかったり、そのリソースが事前に別の DirectDrawSurface オブジェクトに割り当てられている場合、その呼び出しは失敗する。
1 つのサーフェスを作成したり、同時に複数のサーフェス (複合サーフェス) を作成するには、DirectDraw7.CreateSurface メソッドを使う。CreateSurface を呼び出す場合、サーフェスのディメンジョンを指定する。このディメンジョンでは、サーフェスが単一サーフェスであるか複合サーフェスであるか、およびピクセル フォーマット (サーフェスがインデックス パレットを使用しない場合) を示す。これらすべての特性は DDSURFACEDESC2 型に含まれており、そのアドレスは呼び出し時に送る。ハードウェアが要求された能力をサポートできなかったり、そのリソースが事前に別の DirectDrawSurface オブジェクトに割り当てられている場合、その呼び出しは失敗する。
単一サーフェスまたは複合サーフェスの作成は、数行のコードですむ簡単なタスクである。サーフェスを作成するために必要となるいくつかの一般的な状況 (または、一般的でない状況) を示す。以下の状況について説明する。
クライアント メモリ サーフェス以外のすべてのサーフェスにおけるデフォルトでは、DirectDraw はローカル ビデオ メモリにサーフェスを作成しようとする。サーフェスを保持するために利用できるローカル ビデオ メモリが十分でなければ、DirectDraw は非ローカル ビデオ メモリ (AGP を装備したシステム) を利用しようとする。そして、他のすべてのメモリ タイプが利用できなければ、システム メモリに頼ろうとする。サーフェスをあるタイプのメモリに作成するよう明示的に要求するには、IDirectDraw7::CreateSurface を呼び出すときに該当するフラグを関連付けられた DDSCAPS2 構造体に含める。
クライアント メモリ サーフェス以外のすべてのサーフェスにおけるデフォルトでは、DirectDraw はローカル ビデオ メモリにサーフェスを作成しようとする。サーフェスを保持するために利用できるローカル ビデオ メモリが十分でなければ、DirectDraw は非ローカル ビデオ メモリ (AGP を装備したシステム) を利用しようとする。そして、他のすべてのメモリ タイプが利用できなければ、システム メモリに頼ろうとする。サーフェスをあるタイプのメモリに作成するよう明示的に要求するには、DirectDraw7.CreateSurface を呼び出すときに該当するフラグを関連付けられた DDSCAPS2 型に含める。