Platform SDK: DirectX |
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 アプリケーションでは、Direct3D7.GetDevicesEnum メソッドを呼び出して Direct3DEnumDevices クラスへの参照を取得することにより、デバイスの列挙を開始する。Direct3DEnumDevices クラスは、列挙するデバイスの数、および各デバイスの情報を取得するメソッドを定義する。
次のコードは、Direct3DEnumDevices クラスを取得する処理を示す。
' この例では、d3d 変数は Direct3D7 クラスへの ' 有効な参照である。 Dim d3dEnum As Direct3DEnumDevices ' 列挙クラスを取得する。 Set d3dEnum = d3d.GetDevicesEnum