gluLookAtの等価表現
gluLookAtでMultiplyされる行列を自前で作る場合、以下のようにすればokです。
If you want to get the matrix that is generated by gluLookAt, here is the way to do it.
c>>
//gluLookAt(
// eye[0], eye[1], eye[2],
// at[0], at[1], at[2],
// 0.0, 1.0, 0.0);
// equivalent pseudo code
float lookat[16];
midentity(lookat);
vec3 s = (vec3)&lookat[0];
vec3 u = (vec3)&lookat[4];
vec3 f = (vec3)&lookat[8];
vec3 t = (vec3)&lookat[12];
vcpy(t, &eye);
vneg(t);
vsub(f, &at, &eye);
vnormalize(f);
vec3 up = {0, 1, 0};
vcross(s, f, &up);
vcross(u, s, f);
vneg(f);
glMultMatrixf(lookat);
<<--