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 内容