Platform SDK: DirectX |
ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「Direct3D 直接モード Visual Basic チュートリアル」を参照すること。
テクスチャ フォーマットを列挙することで、レンダリング デバイスでサポートされるテクスチャ フォーマットをアプリケーションで選択できるようになる。IDirect3DDevice7::EnumTextureFormats メソッドを使用して、サポートされるテクスチャ フォーマットのリストについて現在のドライバに問い合わせる。
pd3dDevice->EnumTextureFormats( TextureSearchCallback, &ddsd.ddpfPixelFormat );
上記の関数呼び出しでは、TextureSearchCallback パラメータは、列挙プロセスで各テクスチャ フォーマットに対して呼び出されるアプリケーション定義コールバック関数 D3DEnumPixelFormatsCallback のアドレスである。
次のコードは TextureSearchCallback コールバック関数の一部である。このコードでは、ループ処理を使用して、デバイスでサポートされるテクスチャ ピクセル フォーマットを検索する。特に、ここで検索するのは 16 ビット テクスチャである。アルファ テクスチャなど、ほかのフォーマットは無視される。
if( pddpf->dwFlags & (DDPF_LUMINANCE|DDPF_BUMPLUMINANCE|DDPF_BUMPDUDV) ) return DDENUMRET_OK; // すべての FourCC フォーマットをスキップする。 if( pddpf->dwFourCC != 0 ) return DDENUMRET_OK; // アルファ モードをスキップする。 if( pddpf->dwFlags&DDPF_ALPHAPIXELS ) return DDENUMRET_OK; // 検索するのは 16 ビット フォーマットであり、それ以外のフォーマットはすべてスキップする。 if( pddpf->dwRGBBitCount != 16 ) return DDENUMRET_OK; // 一致するフォーマットが見つかった場合は、現在のピクセル フォーマットを出力パラメータに // コピーする。 memcpy( (DDPIXELFORMAT*)param, pddpf, sizeof(DDPIXELFORMAT) ); // DDENUMRET_CANCEL を返して列挙を終了する。 return DDENUMRET_CANCEL; }
ここでは、テクスチャ フォーマットの列挙 TextureEnum から、レンダリング デバイスでサポートされるテクスチャ フォーマットを選択した。次は、テクスチャにサーフェスを作成する。このステップについては、「ステップ 2 : テクスチャ サーフェスを作成する」で詳しく説明する。