Share via


テクスチャ リソース

テクスチャ リソース

テクスチャ リソースは、IDirect3DTexture9 インターフェイスに実装されている。テクスチャ インターフェイスへのポインタを取得するには、IDirect3DDevice9::CreateTexture メソッドか、次のいずれかの Direct3D エクステンション (D3DX) 関数を呼び出す。

次のコードでは、D3DXCreateTextureFromFile を使って、Tiger.bmp というファイルからテクスチャをロードする。

// The following code example assumes that D3dDevice
// is a valid pointer to an IDirect3DDevice9 interface.

LPDIRECT3DTEXTURE9 pTexture;

D3DXCreateTextureFromFile( d3dDevice, "tiger.bmp", &pTexture);

D3DXCreateTextureFromFile が受け取る第 1 引数は、IDirect3DDevice9 インターフェイスへのポインタである。第 2 引数は、ロードするテクスチャが入っているファイル名を Microsoft® Direct3D® に指示する。第 3 引数は、作成されたテクスチャ オブジェクトを表す IDirect3DTexture9 インターフェイスへのポインタのアドレスとする。

テクスチャ リソースを使ったレンダリング

Direct3D では、テクスチャ ステージという概念を用いてマルチ テクスチャ ブレンディングをサポートする。テクスチャ ステージごとに、テクスチャとそのテクスチャで実行可能な処理がある。テクスチャ ステージのテクスチャは、カレント テクスチャの集まりを形成する。詳細については、「テクスチャ ブレンディング」を参照すること。各テクスチャ ステートは、そのテクスチャ ステージにカプセル化される。

C++ アプリケーションでは、各テクスチャ ステートは IDirect3DDevice9::SetTextureStageState メソッドで設定する必要がある。第 1 引数の値としてステージ番号 (0 ~ 7) を渡す。第 2 引数の値には、D3DTEXTURESTAGESTATETYPE 列挙型のメンバを設定する。最後の引数は、特定のテクスチャ ステートについてのステート値である。

テクスチャ インターフェイス ポインタを使って、最大 8 つのテクスチャをブレンドしてレンダリングできる。IDirect3DDevice9::SetTexture メソッドを呼び出して現在のテクスチャを設定する。Direct3D は、レンダリングするプリミティブに現在のすべてのテクスチャをブレンドする。

  IDirect3DDevice9::SetTexture メソッドは、割り当てられたテクスチャ サーフェイスの参照カウントをインクリメントする。テクスチャが不要になった場合、該当するステージのテクスチャを NULL に設定する必要がある。これを行わないと、サーフェイスが解放されずメモリ リークが発生する。

IDirect3DDevice9::SetRenderState メソッドを呼び出して、カレント テクスチャのテクスチャ ラッピング ステートを設定できる。第 1 引数の値として、D3DRS_WRAP0 ~ D3DRS_WRAP7 から値を 1 つ渡す。また、D3DWRAPCOORD_0、D3DWRAPCOORD_1、D3DWRAPCOORD_2、D3DWRAPCOORD_3 フラグの組み合わせを使って、u、v、または w 方向のラッピングを有効にする。

また、テクスチャ パースペクティブ ステートとテクスチャ フィルタリング ステートを設定することも可能である。「テクスチャ フィルタリング」を参照すること。