テクスチャ (texture)

テクスチャは、プリミティブの表面に貼り付ける形で使用します。

テクスチャ座標を持つ頂点データの作成

テクスチャを貼り付けるプリミティブは、頂点データにテクスチャ座標を持っている必要があります。テクスチャ座標を持っているカスタム頂点は、次の5つです。

  1. PositionTextured
  2. PositionColoredTextured
  3. PositionNormalTextured
  4. TransformedColoredTextured
  5. TransformedTextured
カスタム頂点のフィールド
  位置
(X, Y, Z)
同次座標wの逆数
(Rhw)
頂点の色
(Color)
頂点の法線
(Nx, Ny, Nz)
テクスチャ座標
(Tu, Tv)
PositionTextured      
PositionColoredTextured    
PositionNormalTextured    
TransformedTextured    
TransformedColoredTextured  
※位置と頂点の法線のフィールドは、それぞれPositionとNormalプロパティからもアクセスできます。

カスタム頂点のコンストラクタ

public PositionTextured(
    Vector3 pos,    // 位置
    float u,        // テクスチャ座標 u
    float v         // テクスチャ座標 v
);
public PositionColoredTextured(
    Vector3 pos,    // 位置
    int c,          // 色
    float u,        // テクスチャ座標 u
    float v         // テクスチャ座標 v
);
public PositionNormalTextured(
    Vector3 pos,    // 位置
    Vector3 nor,    // 法線の頂点
    float u,        // テクスチャ座標 u
    float v         // テクスチャ座標 v
);

テクスチャ座標

テクスチャ座標はテクスチャの左上を (0.0, 0.0)、右下を (1.0, 1.0) とする座標です。

テクスチャのマッピング

テクスチャの作成

ストリームから

public Texture(
    Device device,  // テクスチャに関連付けるデバイス
    Stream data,    // 画像データのストリーム
    Usage usage,    // 使用方法 (常に0を指定)
    Pool pool       // テクスチャを格納するメモリの種類
    );

ファイルから

TextureLoader.FromFile()メソッド

public static Texture FromFile(
    Device device,  // デバイス
    string srcFile  // ファイル名
    );

メッシュ (Xファイル) から

Mesh.FromFile()メソッドで取得できるExtendedMaterial構造体からファイル名を取得し、TextureLoader.FromFile()メソッドでファイルから読み込みます。

テクスチャの描画

デバイス ステージにテクスチャを関連付けます。

public void SetTexture(
    int stage,           // デバイス ステージのインデックス値
    BaseTexture texture  // 設定するテクスチャを表す BaseTextureオブジェクト
    );

テクスチャを描画するときには、ライトを無効にします。

テクスチャの状態 (TextureState)

Device.TextureStateプロパティからテクスチャのステート値を設定します。

TextureStateクラスのプロパティ
  プロパティ 内容 デフォルト値
Color ColorArgument0 三項演算 (積和および線形補間) の3番目の色オペランドの設定 TextureArgument Current
ColorArgument1 ステージの1番目の色引数 TextureArgument TextureColor
ColorArgument2 ステージの2番目の色引数 TextureArgument Current
ColorOperation テクスチャ カラー ブレンディング処理 TextureOperation Modulate
ConstantColor TextureArgument.Constantのと使用されスージごとの色の定数 System.Drawing.Color  
ConstantColorValue int  
Alpha AlphaArgument0 三項演算 (積和および線形補間) のアルファ チャンネル セレクタ オペランドの設定 TextureArgument Current
AlphaArgument1 ステージの1番目のアルファ引数 TextureArgument TextureColor
AlphaArgument2 ステージの2番目のアルファ引数 TextureArgument Current
AlphaOperation テクスチャ アルファ ブレンディング処理 TextureOperation SelectArg1
  ResultArgument TextureArgument.Currentの値 TextureArgument  
Bump BumpEnvironmentLuminanceOffset バンプマップ輝度に使用する浮動小数点数のオフセット float 0.0
BumpEnvironmentLuminanceScale バンプマップ輝度に使用する浮動小数点数のスケール値 float 0.0
BumpEnvironmentMaterial00 バンプ マッピング行列の[0][0]要素 float 0.0
BumpEnvironmentMaterial01 バンプ マッピング行列の[0][1]要素 float 0.0
BumpEnvironmentMaterial10 バンプ マッピング行列の[1][0]要素 float 0.0
BumpEnvironmentMaterial11 バンプ マッピング行列の[1][1]要素 float 0.0
  TextureCoordinateIndex テクスチャ座標のインデックス int  
  TextureTransform テクスチャ座標のトランスフォーム TextureTransform  
TextureStateクラス | MSDN

参考

参考書