Platform SDK: DirectX |
ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「Direct3D 直接モードの C/C++ チュートリアル」を参照すること。
テクスチャを列挙する前に、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 : テクスチャに新規サーフェスを作成する」で説明する。