Microsoft DirectX 8.0 (Visual Basic) |
サーフェスのフォーマットが、指定したリソース タイプとして利用できるかどうか、およびこのアダプタを使用するデバイスでテクスチャ、深度ステンシル バッファ、レンダリング ターゲットのいずれか、またはこれら 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
フォーマットが、要求された使用方法について、指定されたデバイスと互換性がある場合、このメソッドは 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 を返す。