IDirect3D9::CheckDeviceType メソッド (d3d9.h)
ハードウェア アクセラレータデバイスの種類をこのアダプターで使用できるかどうかを確認します。
構文
HRESULT CheckDeviceType(
[in] UINT Adapter,
[in] D3DDEVTYPE DevType,
[in] D3DFORMAT AdapterFormat,
[in] D3DFORMAT BackBufferFormat,
[in] BOOL bWindowed
);
パラメーター
[in] Adapter
型: UINT
列挙するディスプレイ アダプターを示す序数。 D3DADAPTER_DEFAULTは常にプライマリ ディスプレイ アダプターです。 このメソッドは、この値がシステム内のディスプレイ アダプターの数と等しいか、または超えたときに、D3DERR_INVALIDCALLを返します。
[in] DevType
型: D3DDEVTYPE
D3DDEVTYPE 列挙型のメンバー。チェックするデバイスの種類を示します。
[in] AdapterFormat
型: D3DFORMAT
D3DFORMAT 列挙型のメンバー。デバイスの種類を確認するアダプター表示モードの形式を示します。 たとえば、一部のデバイスは 16 ビット/ピクセル モードでのみ動作します。
[in] BackBufferFormat
型: D3DFORMAT
バック バッファー形式。 形式の詳細については、「 D3DFORMAT」を参照してください。 この値は、レンダー ターゲット形式のいずれかである必要があります。 GetAdapterDisplayMode を使用して、現在の形式を取得できます。
ウィンドウ化されたアプリケーションの場合、ハードウェアで色変換がサポートされている場合、バック バッファー形式は表示モード形式と一致する必要はありません。 可能なバック バッファー形式のセットは制約されますが、ランタイムでは、任意の有効なバック バッファー形式を任意のデスクトップ形式に表示できます。 デバイスは通常 8 ビット/ピクセル モードで動作しないため、デスクトップでデバイスを操作できる追加の要件があります。
全画面表示アプリケーションでは、色変換を実行できません。
ウィンドウ モードでは、D3DFMT_UNKNOWNを使用できます。
[in] bWindowed
種類: BOOL
デバイスの種類を全画面表示モードまたはウィンドウ モードで使用するかどうかを示す値。 TRUE に設定すると、ウィンドウ化されたアプリケーションに対してクエリが実行されます。それ以外の場合は、この値を FALSE に設定する必要があります。
戻り値
型: HRESULT
このアダプターでデバイスを使用できる場合は、D3D_OKが返されます。
D3DERR_INVALIDCALLは、アダプターがシステム内のディスプレイ アダプターの数と等しいか、または超えている場合に返されます。 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を返します。
CheckDeviceType を使用して、表示形式とは異なるバック バッファー間の互換性をテストすると、適切な値が返されます。 つまり、呼び出しにはデバイスの機能が反映されます。 デバイスが要求されたバックバッファー形式にレンダリングできない場合でも、呼び出しはD3DERR_NOTAVAILABLEを返します。 デバイスが形式にレンダリングできるが、色変換プレゼンテーションを実行できない場合は、戻り値もD3DERR_NOTAVAILABLE。 アプリケーションは、 CheckDeviceFormatConversion を呼び出すことによって、プレゼンテーション自体のハードウェア サポートを検出できます。 色変換プレゼンテーション自体のソフトウェア エミュレーションは提供されません。
要件
対象プラットフォーム | Windows |
ヘッダー | d3d9.h (D3D9.h を含む) |
Library | D3D9.lib |