我想要的,而不是使用gluLookAt計算LOOKAT矩陣自己,()。 我的問題是我的矩陣不起作用。然而,在gluLookAt上使用相同的參數仍然有效。gluLookAt替代不起作用
我創建LOOKAT矩陣的方式:
Vector3 Eye, At, Up; //these should be parameters =)
Vector3 zaxis = At - Eye; zaxis.Normalize();
Vector3 xaxis = Vector3::Cross(Up, zaxis); xaxis.Normalize();
Vector3 yaxis = Vector3::Cross(zaxis, xaxis); yaxis.Normalize();
float r[16] =
{
xaxis.x, yaxis.x, zaxis.x, 0,
xaxis.y, yaxis.y, zaxis.y, 0,
xaxis.z, yaxis.z, zaxis.z, 0,
0, 0, 0, 1,
};
Matrix Rotation;
memcpy(Rotation.values, r, sizeof(r));
float t[16] =
{
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
-Eye.x, -Eye.y, -Eye.z, 1,
};
Matrix Translation;
memcpy(Translation.values, t, sizeof(t));
View = Rotation * Translation; // i tried reversing this as well (translation*rotation)
現在,當我嘗試使用這個矩陣來調用glMultMatrixf,什麼都沒有,顯示在我的引擎,而使用相同的眼睛,LOOKAT和最多值gluLookAt的作品完美,正如我之前所說的。
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glMultMatrixf(View);
問題必須在我這裏張貼的代碼的某個地方,我知道這個問題是不是在我的Vector3 /矩陣類,因爲他們創建一個投影矩陣時正常工作。
將「視圖」按照列主要順序正確存儲在傳遞給glMultMatrix()時? (從上glMultMatrix()OpenGL的文檔注:「這不同於標準行主C訂購爲矩陣元素」。) – TreDubZedd 2010-05-20 16:49:04
兩個矩陣我的代碼生成被存儲在相同的方式i中的結果傳遞給glMultMatrix() – Brammie 2010-05-20 17:32:18