Platform SDK: DirectX

ステップ 1.3 : テクスチャ フォーマットを列挙する

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「Direct3D 直接モードの C/C++ チュートリアル」を参照すること。

[Visual Basic]

テクスチャを列挙する前に、Direct3DEnumPixelFormats オブジェクトを宣言する必要がある。

Dim TextureEnum As Direct3DEnumPixelFormats

次に、レンダリング デバイスで Direct3DDevice7.GetTextureFormatsEnum メソッドを呼び出して、Direct3DEnumPixelFormats オブジェクトを返す。

Set TextureEnum = g_d3dDevice.GetTextureFormatsEnum()

これで、Direct3DEnumPixelFormats オブジェクト、TextureEnum でメソッドを呼び出し、デバイスがそのテクスチャでサポートするピクセル フォーマット情報を取得できる。

サンプル Texture の以下のコードでは、デバイスがサポートするテクスチャ ピクセル フォーマットをループによって検索する。このコードでは、16 ビット テクスチャを検索している。アルファ テクスチャなど、その他のフォーマットはすべて無視されるので注意する。

For i = 1 To TextureEnum.GetCount()
bIsFound = True
Call TextureEnum.GetItem(i, ddsd.ddpfPixelFormat)
        
With ddsd.ddpfPixelFormat
' 未知のモードはスキップする。
If .lFlags And (DDPF_LUMINANCE Or DDPF_BUMPLUMINANCE Or DDPF_BUMPDUDV) Then bIsFound = False
            
' FourCC フォーマットはすべてスキップする。
If .lFourCC <> 0 Then bIsFound = False
            
' アルファ モードはスキップする。
If .lFlags And DDPF_ALPHAPIXELS Then bIsFound = False
            
' 16 ビット モード以外のモードはすべてスキップする。
If .lRGBBitCount <> 16 Then bIsFound = False
End With
        
If bIsFound Then Exit For
        
Next i

これで、列挙されたテクスチャ フォーマット TextureEnum から、レンダリング デバイスでサポートされるテクスチャ フォーマットが選択されたので、そのテクスチャにサーフェスを作成することができる。これについては、「ステップ 1.4 : テクスチャに新規サーフェスを作成する」で説明する。