Microsoft DirectX 8.0 (C++)

IDirect3D8::CheckDeviceType

このアダプタで特定のデバイス タイプを使用して、特定のフォーマットを使ったハードウェア アクセラレーションを期待できるかどうかを確認する。

HRESULT CheckDeviceType(
  UINT Adapter,
  D3DDEVTYPE CheckType,
  D3DFORMAT DisplayFormat,
  D3DFORMAT BackBufferFormat,
  BOOL Windowed
);

パラメータ

Adapter
[in] 列挙するディスプレイ アダプタを示す序数。D3DADAPTER_DEFAULT は常にプライマリ ディスプレイ アダプタである。この値がシステムのディスプレイ アダプタの数以上の場合、このメソッドは D3DERR_INVALIDCALL を返す。
CheckType
[in] D3DDEVTYPE 列挙型のメンバ。検査するデバイス タイプを示す。
DisplayFormat
[in] D3DFORMAT 列挙型のメンバ。デバイス タイプを検査するアダプタ ディスプレイ モードのフォーマットを示す。たとえば、デバイスによっては、ピクセル単位の 16 ビットのモードでのみ動作する。
BackBufferFormat
[in] D3DFORMAT 列挙型のメンバ。テストするバック バッファのフォーマットを示す。
Windowed
[in] デバイス タイプがフルスクリーン モードとウィンドウ モードのいずれで使用されるかを示す値。TRUE を設定した場合、ウィンドウ アプリケーションの照会が実行される。それ以外の場合は、この値に FALSE を設定することが望ましい。

戻り値

そのアダプタでデバイスを使用できる場合は、D3D_OK を返す。

Adapter の値がシステムのディスプレイ アダプタの数と等しいか、それより大きい場合は、D3DERR_INVALIDCALL を返す。CheckType が存在しないデバイスを指定していた場合、このメソッドは D3DERR_INVALIDDEVICE を返す。サーフェス フォーマットがサポートされていないか、指定されたフォーマットでハードウェア アクセラレーションが使用できない場合は、D3DERR_NOTAVAILABLE を返す。

注意

使用できない可能性のある最も重要なデバイス タイプは D3DDEVTYPE_HAL である。D3DDEVTYPE_HAL にはハードウェア アクセラレーションが必要である。アプリケーションでは、CheckDeviceType を使って、必要なハードウェアとドライバがシステムにあるかどうかを確認する必要がある。使用できない可能性のあるもう 1 つのデバイスは D3DDEVTYPE_SW である。このデバイス タイプは、IDirect3D8::RegisterSoftwareDevice を使って登録されたプラグ可能なソフトウェア デバイスを表す。

アプリケーションでは、アルファ チャネルを含む 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;

// このアダプタには、このレンダリング ターゲット フォーマットを使用する HAL がない。 
// 別のフォーマットを使って再度試みる。

デバイスがデフォルトのアダプタ上で、指定されたサーフェス フォーマットで使用できる場合、上のコードは S_OK を返す。

動作環境

  ヘッダー : d3d8.h で宣言。
  インポート ライブラリ : D3d8.lib を使用。