Platform SDK: DirectX |
DirectDraw オブジェクトは、すべての DirectDraw アプリケーションの中心であり、また Direct3D® アプリケーションで欠く事のできない部分でもある。DirectDraw オブジェクトは作成する最初のオブジェクトであり、このオブジェクトから関連する他のすべてのオブジェクトが作成される。DirectX 7.0 では、最新バージョンの DirectDraw オブジェクトを作成するために新しいメソッドが導入された。DirectDrawCreateEx 関数は、最新の Direct3D インターフェイスを公開する DirectDraw オブジェクトを作成する。以前のバージョンでは、DirectDrawCreate 関数を呼び出して DirectDraw オブジェクトを作成する。この関数は、IDirectDraw インターフェイスを返す。異なるバージョンのインターフェイス (IDirectDraw7 など) で新しい機能を利用したい場合は、それを実行できるかどうかを照会することができる (「IDirectDraw7 インターフェイスの取得」を参照すること)。DirectX 7.0 では、DirectDrawCreate を使って DirectDraw オブジェクトを作成した後で、IDirectDraw7 インターフェイスを照会することもできるが、Direct3D の新機能はサポートしない。Direct3D の新機能を使用するには、DirectDrawCreateEx 関数を使って IDirectDraw7 インターフェイスを取得しなければならない。複数の DirectDraw オブジェクトを作成できる (システムにインストールされた各ディスプレイ デバイスに対して 1 つ) ことに注意する。
DirectDraw オブジェクトは、すべての DirectDraw アプリケーションの中心であり、また Direct3D® アプリケーションで欠く事のできない部分でもある。DirectDraw オブジェクトは作成する最初のオブジェクトであり、このオブジェクトから関連する他のすべてのオブジェクトが作成される。Visual Basic では、DirectX7.DirectDrawCreate メソッドを呼び出して、最新バージョンの Direct3D インターフェイスを公開する DirectDraw7 オブジェクトを作成する。
DirectDraw オブジェクトは、ディスプレイ デバイスを表す。また、オブジェクトの作成されたディスプレイ デバイスが、ハードウェア アクセラレーションをサポートする場合、それを利用する。個々の固有の DirectDraw オブジェクトは、ディスプレイ デバイスを操作したり、作成するオブジェクトに依存する (または、"接続する") サーフェス パレット、およびクリッパーなどのオブジェクトを作成できる。たとえば、サーフェスを作成するには、C++ の IDirectDraw7::CreateSurface メソッドまたは Visual Basic の DirectDraw7.CreateSurface メソッドを呼び出す。あるいは、サーフェスに適用するパレット オブジェクトが必要な場合は、C++ の IDirectDraw7::CreatePalette メソッドまたは Visual Basic のDirectDraw7.CreatePalette メソッドを呼び出す。さらに、IDirectDraw7 インターフェイスと DirectDraw7 オブジェクトはクリッパー オブジェクトを作成する同様なメソッドを公開する。
DirectDraw オブジェクトに関して、同時に 2 つ以上のインスタンスを作成できる。最も単純な例としては、Windows 95 または Windows NT 4.0 以前のシステム上で 2 つのモニタを使う場合がある。これらのオペレーティング システム自体は、デュアル モニタをサポートしないが、ディスプレイ デバイスそれぞれに DirectDraw HAL を記述することができる。Windows と GDI が認識するディスプレイ デバイスは、デフォルトの DirectDraw オブジェクトのインスタンスを作成するときに用いられるものである。そうでないデバイスは、第 2 のディスプレイ デバイスのグローバル ユニーク識別子 (GUID) を使って作成された、独立したもう 1 つの DirectDraw オブジェクトによりアドレス指定される。この GUID は、C++ の DirectDrawEnumerate 関数または Visual Basic の DirectDrawEnum.GetGuid メソッドを使って取得できる。
DirectDraw オブジェクトは作成したすべてのオブジェクトを管理し、デフォルトのパレット (プライマリ サーフェス が 8 ビットごとのピクセル モードの場合)、デフォルト カラー キー、およびハードウェア ディスプレイ モードを制御する。そして、どのリソースが割り当て済みで、どのリソースが使用可能かを調査する。