Microsoft DirectX 8.0 (C++)

IDirect3D8::CheckDeviceFormat

サーフェスのフォーマットが、指定したリソース タイプとして利用できるかどうか、およびこのアダプタを使用するデバイスでテクスチャ、深度ステンシル バッファ、レンダリング ターゲットのいずれか、またはこれら 3 つの組み合わせとして使用できるかどうかを調べる。

HRESULT CheckDeviceFormat(
  UINT Adapter,
  D3DDEVTYPE DeviceType,
  D3DFORMAT AdapterFormat,
  DWORD Usage,
  D3DRESOURCETYPE RType,
  D3DFORMAT CheckFormat
);

パラメータ

Adapter
[in] 照会するディスプレイ アダプタを示す序数。D3DADAPTER_DEFAULT は常にプライマリ ディスプレイ アダプタである。この値がシステムのディスプレイ アダプタの数以上の場合、このメソッドは D3DERR_INVALIDCALL を返す。
DeviceType
[in] デバイス タイプを識別する D3DDEVTYPE 列挙型のメンバ。
AdapterFormat
[in] アダプタで使用されるディスプレイ モードのフォーマットを識別する、D3DFORMAT 列挙型のメンバ。
Usage
[in] CheckFormat のサーフェスに対して要求する使用方法。次のフラグのどちらか一方または両方を指定できる。
D3DUSAGE_DEPTHSTENCIL
深度ステンシル サーフェスとして使用できるサーフェスであることを示す。
D3DUSAGE_RENDERTARGET
レンダリング ターゲットとして使用できるサーフェスであることを示す。RType パラメータの値が明確に特定の用途を示唆している場合、アプリケーションは Usage パラメータを 0 にしておくことができる。
RType
[in] D3DRESOURCETYPE 列挙型のメンバ。調査するフォーマットと共に使用することを要求するリソース タイプを指定する。
CheckFormat
[in] D3DFORMAT 列挙型のメンバ。Usage で指定した方法で使用するサーフェスのフォーマットを示す。

戻り値

指定したフォーマットが、指定したデバイスおよび使用方法と互換性がある場合、このメソッドは D3D_OK を返す。

Adapter の値がシステムのディスプレイ アダプタの数と等しいか、それより大きい場合、または DeviceType がサポートされていないタイプの場合は、D3DERR_INVALIDCALL を返す。指定したデバイスおよび使用方法では認められないフォーマットの場合は、D3DERR_NOTAVAILABLE を返す。

注意

CheckDeviceFormat の一般的な用途は、特定の深度ステンシル サーフェス フォーマットが存在するかどうかを確認することである。列挙処理の詳細については、「デバイスの選択」を参照すること。次のコードは、CheckDeviceFormat を使用して深度ステンシル フォーマットの有無を確認する方法を示している。

BOOL IsDepthFormatExisting( D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat ) {
    HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                          D3DDEVTYPE_HAL,
                                          AdapterFormat,
                                          D3DUSAGE_DEPTHSTENCIL,
                                          D3DRTYPE_SURFACE,
                                          DepthFormat);

    return SUCCEEDED( hr );
}

上の呼び出しは、システムに DepthFormat が存在しない場合は FALSE を返す。

CheckDeviceFormat のもう 1 つの一般的な用途は、特定のサーフェス フォーマットに存在するテクスチャを、現在のディスプレイ モードでレンダリングできるかどうかを確認することである。次のコードは、CheckDeviceFormat を使用して、テクスチャ フォーマットが特定のバック バッファ フォーマットと互換性があるかどうかを確認する方法を示している。

BOOL IsTextureFormatOk( D3DFORMAT TextureFormat, D3DFORMAT AdapterFormat ) {
    HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                          D3DDEVTYPE_HAL,
                                          AdapterFormat,
                                          0,
                                          D3DRTYPE_TEXTURE,
                                          TextureFormat);

    return SUCCEEDED( hr );
}

上の呼び出しは、アダプタ サーフェス フォーマットが AdapterFormat であるときに、TextureFormat を使ってテクスチャをレンダリングできない場合、FALSE を返す。

動作環境

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