現在地 >> メニュー >> 発展編01 >> 発展編01::テクスチャ行列

テクスチャ行列


「glMatrixMode関数」には「GL_MODELVIEW」、「GL_PROJECTION」などが指定できるが、
「GL_TEXTURE」を指定すると、テクスチャ行列に対する演算モードに切り替わる。

【例】
	glMatrixMode(GL_TEXTURE); //モード切替え
	glLoadIdentity();
	glTranslatef(... ...);


座標系(x,y,z,w)は(s,t,r,q)に対応しているため
このモード変換を使うとテクスチャ行列を簡単に変換できる。

[例1]:平行移動の変換


【変換前の座標対応】
glTexCoord2f(0.f, 1.f)glVertex2f(-1.f,1.f)
glTexCoord2f(0.f, 0.f)glVertex2f(-1.f,-1.f)
glTexCoord2f(1.f, 0.f)glVertex2f(1.f,-1.f)
glTexCoord2f(1.f, 1.f)glVertex2f(1.f,1.f)
          ↓
(s,t)それぞれ0.5だけ平行移動した座標で対応をさせたい
          ↓
【変換後の座標対応】
glTexCoord2f(0.5f, 1.5f)glVertex2f(-1.f,1.f)
glTexCoord2f(0.5f, 0.5f)glVertex2f(-1.f,-1.f)
glTexCoord2f(1.5f, 0.5f)glVertex2f(1.f,-1.f)
glTexCoord2f(1.5f, 1.5f)glVertex2f(1.f,1.f)

このような場合、以下のように書ける
... ...
glMatrixMode(GL_TEXTURE); //モード切替え
glLoadIdentity();
glTranslatef(0.5f, 0.5f, 0.f);
Draw();//描画
... ...





▲貼り付け対応のイメージ

[例2]:回転させる


回転の場合は(s,t,r)の3座標で考えるとわかりやすい。
例えば以下は、r座標を中心に回転を与える場合である。



▲貼り付け対応のイメージ

glMatrixMode(GL_TEXTURE); //モード切替え
glLoadIdentity();
glRotatef(anglef,0,0, 1.f);
Draw();

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます