IDirect3D9::CheckDeviceType メソッド
IDirect3D9::CheckDeviceType メソッド
アダプタでハードウェア アクセラレーション デバイス タイプが使用可能かどうかを検証する。
構文
HRESULT CheckDeviceType(
UINT Adapter,
D3DDEVTYPE DeviceType,
D3DFORMAT DisplayFormat,
D3DFORMAT BackBufferFormat,
BOOL Windowed
);
パラメータ
Adapter
[in] 列挙するディスプレイ アダプタを示す序数。D3DADAPTER_DEFAULT は常にプライマリ ディスプレイ アダプタである。この値がシステムのディスプレイ アダプタの数以上の場合、このメソッドは D3DERR_INVALIDCALL を返す。DeviceType
[in] D3DDEVTYPE 列挙型のメンバ。チェックするデバイス タイプを示す。DisplayFormat
[in] D3DFORMAT 列挙型のメンバ。デバイス タイプをチェックするアダプタ ディスプレイ モードのフォーマットを示す。たとえば、デバイスによっては、ピクセル単位の 16 ビットのモードでのみ動作するものもある。BackBufferFormat
[in] バック バッファ フォーマット。フォーマットの詳細については、「D3DFORMAT」を参照すること。この値は、レンダリング ターゲット フォーマットの 1 つでなければならない。現在のフォーマットは、IDirect3DDevice9::GetDisplayMode を使って取得できる。ウィンドウ アプリケーションでは、ハードウェアが色変換をサポートしている場合、バック バッファ フォーマットがディスプレイ モード フォーマットと必ずしも一致する必要はない。使用可能なバック バッファ フォーマットのセットは制限されているが、ランタイムは任意の有効なバック バッファ フォーマットを使って、任意のデスクトップ フォーマットにプレゼンテーションできる。ただし、デバイスがデスクトップ モードで動作可能でなければならないという要件もある。通常、デバイスはピクセルあたり 8 ビットのモードでは動作しない。
フルスクリーン アプリケーションでは、色変換を実行できない。
D3DFMT_UNKNOWN は、ウィンドウ モードで使える。
Windowed
[in] デバイス タイプがフルスクリーン モードとウィンドウ モードのどちらで使われるかを示す値。TRUE を設定した場合、ウィンドウ アプリケーションの問い合わせが実行される。それ以外の場合は、この値に FALSE する必要がある。
戻り値
このアダプタでデバイスを使える場合は、D3D_OK を返す。
Adapter がシステムのディスプレイ アダプタの数以上の場合は、D3DERR_INVALIDCALL を返す。IDirect3D9::CheckDeviceType が存在しないデバイスを指定していた場合も、D3DERR_INVALIDCALL を返す。
要求したバック バッファ フォーマットがサポートされていないか、指定したフォーマットでハードウェア アクセラレーションが使えない場合は、D3DERR_NOTAVAILABLE を返す。
注意
デバイス型ハードウェア アブストラクション レイヤ (HAL) にはハードウェア アクセラレーションが必要である。アプリケーションでは、CheckDeviceType を使って HAL デバイスのサポートに必要なハードウェアおよびドライバがあるかどうかを確認できる。
フルスクリーン アプリケーションでは、アルファ チャンネルを含む DisplayFormat を指定すべきではない。この場合、呼び出しは失敗する。バック バッファにアルファ チャンネルが存在してもよいが、2 つのディスプレイ フォーマットは他のすべての面で同じでなければならない。たとえば、DisplayFormat が D3DFMT_X1R5G5B5 の場合、BackBufferFormat の有効な値には D3DFMT_X1R5G5B5 および D3DFMT_A1R5G5B5 は含まれるが、D3DFMT_R5G6B5 は除外される。
次のサンプル コードは、CheckDeviceType を使って、特定のデバイス タイプをそのアダプタで使えるかどうかを確認する方法を示している。
if(SUCCEEDED(pD3Device->CheckDeviceType(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
DisplayFormat,
BackBufferFormat,
bIsWindowed)))
return S_OK;
// There is no HAL on this adapter using this render target format.
// Try again, using another format.
デバイスがデフォルトのアダプタ上で、指定されたサーフェイス フォーマットで使える場合、このコードは S_OK を返す。
IDirect3D9::CheckDeviceType を使って、ディスプレイ フォーマットと異なるバック バッファとの互換性をテストすると、適切な値が返される。つまり、呼び出しはデバイスの能力を表す。要求したバック バッファ フォーマットにデバイスがレンダリングできない場合でも、呼び出しは D3DERR_NOTAVAILABLE を返す。デバイスがそのフォーマットにレンダリングできるが、色変換を使ったプレゼンテーションを実行できない場合も、戻り値は D3DERR_NOTAVAILABLE になる。アプリケーションでは、IDirect3D9::CheckDeviceFormatConversion を呼び出してプレゼンテーション自体のハードウェア サポートを検出できる。色変換を使ったプレゼンテーション自体のソフトウェア エミュレーションは提供されない。