テクスチャ座標の自動生成を「GL_OBJECT_LINEAR」と指定した場合、
以下の式でS,T,R,Qの各テクスチャ座標を計算する。
テクスチャ座標 = a*X + b*Y + c*Z + d*W
ここで、
- X,Y,Z,W → オブジェクト座標系
- a,b,c,d → 平面の方程式 ax + by + cz + d = 0 の各係数
[例]
GLfloat xPlane[] = { 1.0f, 0.0f, 0.0f, 0.0f }; //x = 0
GLfloat yPlane[] = { 0.0f, 1.0f, 0.0f, 0.0f }; //y = 0
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGenfv(GL_S, GL_OBJECT_PLANE, xPlane);
glTexGenfv(GL_T, GL_OBJECT_PLANE, yPlane);
▲この場合、
とそのまま対応する。
つまり、
glEnable(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
... ...
glRectf(0,0,1,1);
... ...
glDisable(GL_TEXTURE_GEN_T);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_2D);
とした場合、四角いポリゴンに2次元画像がぴったりはまる事になる。
サンプルコード >>
発展編01::まとめコード4_1