IDirect3D9::CheckDeviceType
このアダプターで、ハードウェアで高速化されたデバイス タイプを使用できるかどうかを確認します。
HRESULT
CheckDeviceType(
UINT Adapter,
D3DDEVTYPE DeviceType,
D3DFORMAT DisplayFormat,
D3DFORMAT BackBufferFormat,
BOOL Windowed
);
パラメータ
- Adapter
列挙するディスプレイ アダプターを示す序数。D3DADAPTER_DEFAULT は常にプライマリ ディスプレイ アダプターです。システムのディスプレイ アダプターの数以上の値が指定された場合、このメソッドは D3DERR_INVALIDCALL を返します。 - DeviceType
D3DDEVTYPE 列挙型のメンバー。チェックするデバイス タイプを指定します。 - DisplayFormat
D3DFORMAT 列挙型のメンバー。デバイス タイプをチェックするアダプター表示モードのフォーマットを指定します。たとえば、一部のデバイスは 1 ピクセルあたり 16 ビットのモードでのみ動作します。 - BackBufferFormat
バック バッファー フォーマット。フォーマットの詳細については、「D3DFORMAT」を参照してください。この値には、以下のいずれかのレンダリング フォーマットを指定します。現在のフォーマットは、IDirect3DDevice9::GetDisplayMode を使用して取得できます。 ウィンドウ アプリケーションでは、ハードウェアがカラー変換をサポートしている場合、バック バッファー フォーマットはディスプレイ フォーマットと一致する必要はありません。可能なバック バッファー フォーマットのセットは制限されていますが、実行時には、すべての有効なバック バッファー フォーマットが各デスクトップ フォーマットで表現されます。デバイスは、通常、ピクセルあたり 8 ビットのモードでは動作しないので、デスクトップ モードで動作するための追加要件があります。 フルスクリーン アプリケーションはカラー変換を実行できません。 D3DFMT_UNKNOWN はウィンドウ モードで使用できます。 - Windowed
デバイス タイプがフルスクリーン モードで使用されるか、またはウィンドウ モードで使用されるかを示す値。TRUE に設定すると、ウィンドウ アプリケーションのクエリが実行されます。このクエリを実行しない場合は、FALSE に設定します。
戻り値
このアダプターでデバイスを使用できる場合は、D3D_OK が返されます。 Adapter にシステムのディスプレイ アダプターの数以上の値を指定すると、D3DERR_INVALIDCALL が返されます。IDirect3D9::CheckDeviceType で存在しないデバイスを指定した場合にも、D3DERR_INVALIDCALL が返されます。 要求されたバック バッファー フォーマットがサポートされていない場合、または指定のフォーマットでハードウェア アクセラレーションが利用できない場合は、D3DERR_NOTAVAILABLE が返されます。
解説
hal デバイス タイプにはハードウェア アクセラレーションが必要です。hal デバイスをサポートするために必要なハードウェアおよびドライバーの有無を調べるには、CheckDeviceType を使用できます。
フルスクリーン アプリケーションは、アルファ チャンネルを含む 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 の呼び出しにより、アプリケーションはプレゼンテーション自体のハードウェア サポートを検出できます。カラー変換プレゼンテーション自体のソフトウェア エミュレーションは提供されません。
要件
ヘッダー: D3D9.h 宣言
ライブラリ: D3D9.lib 内容