コードスペランカー

ゲーム開発日誌など

テクスチャのアニメーション

DXライブラリを使ってポリゴンを表示させるために必要な頂点情報は下記のような形式の構造体に治まっている。

// 3D描画に使用する頂点データ型
struct VERTEX3D
{
	// 座標
	VECTOR pos ;
	// 法線
	VECTOR norm ;
	// ディフューズカラー
	COLOR_U8 dif ;
	// スペキュラカラー
	COLOR_U8 spc ;
	// テクスチャ座標
	float u, v ;
	// サブテクスチャ座標
	float su, sv ;
} ;

UVの情報が構造体に直接もたれている。つまり直接的な参照のみで、UVをいじってアニメーションをさせようと思うと、アニメーションをさせる頂点データすべてを書き換えなければならない。1フレームに処理を収めようと考えると、書き換えられる頂点数はそれほど多くはないことになる。
では、それを踏まえてアニメーションをさせる方法はないだろうか?UVの情報は固定しテクスチャそのものを張り替えればよい。という結論に達した。これであれば書き換えに必要な手間は、int型のリテラルをひとつだけですむ。
欠点としては、同時に描画するポリゴン全てが書き換わるので、表現方法が限られるということだ。そうでなければ、アニメーションの数だけ同時に描画するものを分割する必要があるということだ。