×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。

Home | Lesson | Game | Tool | Link

6.テクスチャ

ポリゴンにテクスチャ(画像)を貼り付けます。


テクスチャ読み込み
テクスチャを読み込んで、マテリアルに設定します。
※ここではエラーチェックを行っていません。
 テクスチャが存在しないなどの理由で読み込みに失敗した場合は、
 Textureには「0」が返ってきます。
 テクスチャがない場合は、頂点カラーを利用して描画されます。

	//テクスチャ読み込み
	ITexture* Texture;
	Texture = driver->getTexture("wall.bmp");
	SMaterial Material;
	Material.Lighting = false;
	Material.TextureLayer[0].Texture = Texture;//1.4対応
	driver->setMaterial(Material);


getTexture
指定したテクスチャを読み込みます。
ITexture* getTexture(
	IReadFile* file
)
file 読み込むテクスチャを指定します。読み込みに失敗した場合は0を返します。

テクスチャフォーマットには、以下のものを指定できます。
Adobe Photoshop (.psd) 
JPEG File Interchange Format (.jpg) 
Portable Network Graphics (.png) 
Truevision Targa (.tga) 
Windows Bitmap (.bmp) 
Zsoft Paintbrush (.pcx) 


テクスチャ座標の設定
S3DVertexのテクスチャの座標を変更します。
基本的には左上が(0,0)、右下が(1,1)となるように設定します。
ここでは1面分しか記述していませんが、6面分設定します。
	S3DVertex ver2[24];
	ver2[ 0] = S3DVertex(-1, 1,-1,  0,0,0, 0xFFFFFFFF, 0,0);//前左上
	ver2[ 1] = S3DVertex( 1, 1,-1,  0,0,0, 0xFFFFFFFF, 1,0);//前右上
	ver2[ 2] = S3DVertex(-1,-1,-1,  0,0,0, 0xFFFFFFFF, 0,1);//前左下
	ver2[ 3] = S3DVertex( 1,-1,-1,  0,0,0, 0xFFFFFFFF, 1,1);//前右下


テクスチャ座標

テクスチャは、左上を(0,0)、右下を(1,1)という範囲で設定されます。
大きさが32*32、128*128、32*128でも、関係なく1として考えた設定になっています。
上のプログラムで設定した値は、テクスチャをそのままポリゴンに貼り付けることになります。

左上が(0,0)で右下が(0.5,0.5)となるように設定した場合は、上の画像の赤の部分だけを
貼り付けることになります。
同様に、左上を(0.5,0.5)で右下が(1,1)となるように設定した場合は、黄の部分だけを
貼り付けることになります。

1を超える値を設定した場合は…
左上が(0,0)、右下を(2,2)となるように設定すると、縦横に2個ずつ貼り付けることができます。

左右が逆の値を設定した場合は…
右上が(0,0)、左下を(1,1)となるように設定すると、左右反転して貼り付けることができます。

ダウンロード
今回作成したファイル一式です。

宿題
1.1面にだけテクスチャを貼り付けて、残りの面は青で表示してみましょう。