Platform SDK: DirectX |
ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「Direct3D 直接モード Visual Basic チュートリアル」を参照すること。
IDirectDraw7::EnumDisplayModes メソッドは、ハードウェアが DirectDraw オブジェクトを介して公開するすべてのディスプレイ モードを列挙する。Enumeration アプリケーションでは、次のパラメータを使用して EnumDisplayModes 関数を呼び出す。
// フルスクリーン ディスプレイ モードを列挙する。 pDD->EnumDisplayModes( 0, NULL, &d3dDeviceInfo, ModeEnumCallback );
引数 NULL はすべてのモードの列挙を指定する。第 3 パラメータ &d3dDeviceInfo は、ドライバ情報を格納する D3DDEVICEINFO 構造体のアドレスであり、各列挙メンバに渡される。第 4 パラメータは、EnumModesCallback2 コールバック関数のアドレス ModeEnumCallback であり、ハードウェアが公開する全モードに対して列挙プロシージャで呼び出される。
static HRESULT WINAPI ModeEnumCallback( DDSURFACEDESC2* pddsd, VOID* pParentInfo ) { // ドライバでサポートされるモードのリストにモードをコピーする。 D3DDEVICEINFO* pDriverInfo = (D3DDEVICEINFO*)pParentInfo; pDriverInfo->ddsdModes[pDriverInfo->dwNumModes++] = (*pddsd); return DDENUMRET_OK; }
上記のコードでは、最初のパラメータ pddsd, は、作成可能なディスプレイ モードに関する情報を格納する読み込み専用の DDSURFACEDESC2 構造体である。pParentInfo パラメータ (ディスプレイ ドライバを表すアプリケーション定義データ) は、確実に参照されるように D3DDEVICEINFO 構造体にキャストされる。すべてのディスプレイ モードが列挙されたら、次は Direct3D デバイスを列挙する。このステップについては、「ステップ 1.3 : デバイス情報を列挙する」で説明する。