お問い合わせTopゲームプログラムトップテクスチャマッピングテクスチャマッピング■概要テクスチャマッピングはピクセルシェーダで行われている処理の一つでテクスチャの一部を切り出し、ポリゴンに貼り付ける(マッピング)処理のことです。DirectX9ではレンダリングパイプラインで行われているので、テクスチャ設定と頂点情報にテクスチャ座標を指定することで簡単に実装可能です。テクスチャマッピングを実際に使用するには以下の設定が必要です。頂点データの設定はまずFVFフォーマットにテクスチャを使用することを設定し、その設定に沿った頂点構造体を宣言します。TEX_VERTEX;※テクスチャを表示させるだけならD3DFVF_XYZとD3DFVF_TEX1だけで問題ありません。●テクスチャ画像の読み込みテクスチャの読み込みはD3DXCreateTextureFromFileまたはD3DXCreateTextureFromFileExを使用して読み込みを行います。D3DXCreateTextureFromFile:抜き色の指定がないので必要な引数も少なく、単純な内容になっています。D3DXCreateTextureFromFileEx:抜き色等の細かい指定ができるので、引数の指定が多くなっています。●テクスチャ座標テクスチャマッピングを行う際にテクスチャ座標を指定する必要があります。テクスチャ座標は縦、横ともに0.0~1.0までの範囲で指定します。横をU軸、縦をV軸というためにUV座標と呼ばれることもあります。新しいピクセル情報とします。この新しいピクセルを作り出すための処理ブロックをテクスチャステージといいます。色情報や奥行き、透明度などの情報が含まれている。480の画像の場合、307200個のピクセル情報によって画像が構成されています。DirectXではテクスチャステージの設定はSetTextureStageStateで行われます。以下はSetTextureStageStateで設定できる情報や処理方法の一例です。・どちらかをそのまま出力する(色の合成をしない)・両方を掛け合わせる・両方を足し合わせるSetTextureStageStateを使用していない場合はデフォルト設定が使用されています。α値はテクスチャのα値のみ使用」です。乗算の結果に対して255で除算を行います。96上の例の乗算結果のように乗算は255以外の値で計算を行うと元の色情報よりも小さい値になります。元の色よりも暗くなりますので、注意してください。合成処理の設定も各自で設定する必要があります。合成処理で加算したいと思ったら、色成分と透明度の両方に加算設定を行わないといけません。SetTextureStageStateの使用方法:以下はSetTextureStageStateの関数に渡す引数の内容です。●テクスチャの貼り付けテクスチャステージの設定が終わったらポリゴンに貼り付けるテクスチャの設定をします。テクスチャ貼り付けの関数はSetTextureです。この関数で設定したテクスチャがSetTextureStageStateのD3DTA_TEXTUREとして使用されます。第二引数:テクスチャのポインタ■マルチテクスチャマルチテクスチャとは一枚のポリゴンに複数のテクスチャを貼り付ける方法のことです。DirectX9では一回のテクスチャステージの合成で使用できるテクスチャは一枚のみと決まっているので、マルチテクスチャを実装した場合、設定したテクスチャの枚数分のテクスチャステージが実行されます。頂点データの設定はFVFフォーマットに2枚目のテクスチャを使用する設定をして、その設定に沿った頂点構造体を宣言します。TEX_VERTEX;●テクスチャステージの設定マルチテクスチャのテクスチャステージは各テクスチャごとに設定を行う必要がありますが、基本的な仕様は通常と変わりません。以下の内容がマルチテクスチャ時の変更点になります。「設定中のテクスチャが何枚目なのか」という点で値を変更する必要があります。1枚目なら0、2枚目なら1というように、テクスチャの枚数ごとにステージ番号を加算してください。・第三引数でD3DTA_CURRENTを使用するD3DTA_CURRENTは「前のテクスチャステージで合成された結果を使用する」という意味を持っていますので、色、透明度ともに引数設定の種類ではテクスチャステージの引数のどちらかにD3DTA_CURRENTを使用してください。●テクスチャの貼り付けテクスチャの貼り付けは通常と同じでSetTextureを使用します。マルチテクスチャの場合は、テクスチャの枚数分のSetTextureを呼び出して設定してもらう必要があります。2枚目のテクスチャのポインタ);■抜き抜きとは画像における透明な領域の通称のことです。絵が抜けて背景などが見えることからきており、完全な透明部分(アルファ値が0)を指していることが多いです。描画を行わないという方法がよく使われています。このアルファ値0として扱われる特定の色のことを抜き色と呼んでいます。B:255)のようなあまり使用されない色が指定されています。探している内容が見つからなかったら以下のサイトにあるかもしれません。筆者が開発にかかわらせてもらったアプリのリンクです。