Microsoft DirectX 8.0 (Visual Basic)

Direct3D8.CheckDeviceFormat

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

object.CheckDeviceFormat( _ 
    Adapter As Long, _ 
    DeviceType As  CONST_D3DDEVTYPE, _ 
    AdapterFormat As CONST_D3DFORMAT, _ 
    Usage As Long, _ 
    RType As CONST_D3DRESOURCETYPE, _ 
    CheckFormat As CONST_D3DFORMAT) As Long

指定項目

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

戻り値

フォーマットが、要求された使用方法について、指定されたデバイスと互換性がある場合、このメソッドは D3D_OK を返す。

Adapter がシステムのディスプレイ アダプタの数以上の場合、または DeviceType がサポートされていない場合、このメソッドは D3DERR_INVALIDCALL を返す。フォーマットがこの使用方法についてデバイスで受け入れられない場合、このメソッドは D3DERR_NOTAVAILABLE を返す。

エラー コード

このメソッドでは、Err.Number は設定されていない。

注意

CheckDeviceFormat の一般的な用途は、特定の深度ステンシル サーフェス フォーマットが存在するかどうかを確認することである。列挙処理の詳細については、「デバイスの選択」を参照すること。CheckDeviceFormat のもう 1 つの一般的な用途は、特定のサーフェス フォーマットに存在するテクスチャを、現在のディスプレイ モードでレンダリングできるかどうかを確認することである。

Function DoesDepthFormatExist(DepthFormat As CONST_D3DFORMAT, AdapterFormat As CONST_D3DFORMAT) As Boolean

   Dim Check As Long
   Dim D3D As Direct3D8

   'D3D オブジェクトが作成され、初期化済みであると仮定する。
   Check = D3D.CheckDeviceFormat(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, AdapterFormat, _ 
                                 D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, DepthFormat)
   If (Check >= 0) Then
       DoesDepthFormatExist= True
   Else
      DoesDepthFormatExist= False
   End If

End Function

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

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

Function IsTextureFormatOk(TextureFormat As D3DFORMAT ,AdapterFormat As D3DFORMAT ) As Boolean
   Dim Check As Long
   Dim D3D As Direct3D8
   
   Check = D3D.CheckDeviceFormat( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, AdapterFormat, _ 
                                  0, D3DRTYPE_TEXTURE, TextureFormat)

   If (Check >= 0) Then
      IsTextureFormatOk = True
   Else
      IsTextureFormatOk = False
   End If

End Function

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