テクスチャー リソース (Direct3D 9)
テクスチャー リソースは、IDirect3DTexture9 インターフェイスに実装されています。テクスチャー インターフェイスへのポインターを取得するには、IDirect3DDevice9::CreateTexture メソッド、または次の D3DX 関数のいずれかを呼び出します。
- D3DXCreateTexture
- D3DXCreateTextureFromFile
- D3DXCreateTextureFromFileEx
- D3DXCreateTextureFromFileInMemory
- D3DXCreateTextureFromFileInMemoryEx
- D3DXCreateTextureFromResource
- D3DXCreateTextureFromResourceEx
次のコード例では、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 が取る最初のパラメーターは、IDirect3DDevice9 インターフェイスへのポインターです。2 番目のパラメーターは、テクスチャーのロード元のファイルの名前を Direct3D に指定します。3 番目のパラメーターは、作成されたテクスチャー オブジェクトを表す IDirect3DTexture9 インターフェイスへのポインターのアドレスを取ります。
テクスチャー リソースを使用したレンダリング
Direct3D では、テクスチャー ステージの概念によって複数のテクスチャー ブレンディングがサポートされます。テクスチャー ステージごとに、テクスチャーとそのテクスチャーで実行可能な処理があります。テクスチャー ステージのテクスチャーは、現在のテクスチャーを構成します。詳細については、「テクスチャー ブレンディング (Direct3D 9)」を参照してください。各テクスチャーのステートは、そのテクスチャー ステージにカプセル化されます。
C++ アプリケーションでは、各テクスチャーのステートは IDirect3DDevice9::SetTextureStageState メソッドで設定する必要があります。最初のパラメーターの値としてステージ番号 (0 ~ 7) を渡します。2 番目のパラメーターの値は、D3DTEXTURESTAGESTATETYPE 列挙型のメンバーに設定します。最後のパラメーターは、特定のテクスチャー ステートのステート値です。
アプリケーションでは、テクスチャー インターフェイス ポインターを使用し、最大 8 つのテクスチャーをブレンドしてレンダリングできます。IDirect3DDevice9::SetTexture メソッドを呼び出して、現在のテクスチャーを設定します。Direct3D では、レンダリングするプリミティブに現在のテクスチャーすべてをブレンドします。
注 IDirect3DDevice9::SetTexture メソッドによって、割り当てられたテクスチャー サーフェスのリファレンス カウントがインクリメントされます。テクスチャーが不要になった場合、該当するステージのテクスチャーを NULL に設定する必要があります。これを行わなかった場合、サーフェスが解放されないため、メモリー リークが発生します。
アプリケーションで現在のテクスチャーのテクスチャー ラッピング ステートを設定するには、IDirect3DDevice9::SetRenderState メソッドを呼び出します。最初のパラメーターの値として D3DRS_WRAP0 ~ D3DRS_WRAP7 の値を渡し、D3DWRAPCOORD_0、D3DWRAPCOORD_1、D3DWRAPCOORD_2、および D3DWRAPCOORD_3 フラグの組み合わせを使用して、u、v、または w 方向のラッピングを有効にします。
また、テクスチャー パースペクティブ ステートとテクスチャー フィルタリング ステートを設定することもできます。「テクスチャー フィルタリング (Direct3D 9)」を参照してください。