Microsoft DirectX 8.0 (C++) |
このアダプタで特定のデバイス タイプを使用して、特定のフォーマットを使ったハードウェア アクセラレーションを期待できるかどうかを確認する。
HRESULT CheckDeviceType( UINT Adapter, D3DDEVTYPE CheckType, D3DFORMAT DisplayFormat, D3DFORMAT BackBufferFormat, BOOL Windowed );
そのアダプタでデバイスを使用できる場合は、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 を使用。