Platform SDK: DirectX

デバイス列挙の開始

[C++]

C++ アプリケーションでは、IDirect3D7::EnumDevices メソッドを呼び出してデバイスの列挙を開始する。このメソッドは、ハードウェアでサポートされている Direct3D デバイスをすべて列挙する。Direct3D は、D3DEnumDevicesCallback7 関数を呼び出して、使用するデバイスを選択する。D3DEnumDevicesCallback7 関数をアプリケーションに用意しておく。このコールバック関数はアプリケーションから提供されるため、独自の名前を付けることができる。

次のコードは、Direct3D デバイスの列挙する処理を示す。この例では、デバイス列挙コールバック関数の名前を EnumDeviceCallback とする。次のコードでは、EnumDeviceCallback へのポインタを IDirect3D7::EnumDevices メソッドに渡す。その後、このメソッドは列挙する各デバイスに対して EnumDeviceCallback を呼び出し、デバイスを返す。このコールバックは、D3DENUMRET_CANCEL を返すことで、すべてのデバイスが列挙される前に列挙処理を停止できる。

// このコードでは、コードを実行する前にアプリケーションが取得した IDirect3D7 インターフェイスへの
// 
// 有効なポインタが変数 lpd3d に格納されている。
 
BOOL fDeviceFound = FALSE; 
hRes = lpd3d->EnumDevices(EnumDeviceCallback, &fDeviceFound); 
if (FAILED(hRes)) 
{
// エラー処理コード
}
 
if (!fDeviceFound)
{ 
// エラー処理コード
} 
[Visual Basic]

Visual Basic アプリケーションでは、Direct3D7.GetDevicesEnum メソッドを呼び出して Direct3DEnumDevices クラスへの参照を取得することにより、デバイスの列挙を開始する。Direct3DEnumDevices クラスは、列挙するデバイスの数、および各デバイスの情報を取得するメソッドを定義する。

次のコードは、Direct3DEnumDevices クラスを取得する処理を示す。

' この例では、d3d 変数は Direct3D7 クラスへの
' 有効な参照である。
Dim d3dEnum As Direct3DEnumDevices
 
' 列挙クラスを取得する。
Set d3dEnum = d3d.GetDevicesEnum