我的問題是爲什麼我有三個不同的矩陣,有什麼區別,這是從剪輯到眼睛空間轉換座標的正確方法。OpenGL爲什麼我得到了三個不同的投影矩陣
詳情:
我想獲得的OpenGL的投影矩陣,以實現虛擬掃描儀,我用這個矩陣座標從剪輯轉換爲眼睛空間。 我發現了三個途徑獲得:
glGetFloatv(GL_PROJECTION_MATRIX,projection_tmp);
GLM :: MAT4 PROJ = GLM ::透視( FOV, 方面, zNear,zFar);
- 計算它通過這個頁面給出的方法手動:gluperspective source code
參數傳遞給這三個方法如下:
const double zNear = 1;
const double zFar = 10001;//for computational convenience
const double fov = _model.getCamera().getFieldOfViewAngle();//60
//w(523)h(489)
const double aspect = static_cast<double>(w)/static_cast<double>(h);
然後我得到三個不同的矩陣:
glGetFloatv:
1.61945 0 0 0
0 1.73205 0 0
0 0 -1.0002 -1
0 0 -2.0002 0
GLM:
-0.145971 0 0 0
0 -0.15612 0 0
0 0 -1.0002 -1
0 0 -2.0002 0
手冊:
0.504724 0 0 0
0 0.57735 0 0
0 0 -1.0002 1
0 0 -2.0002 0
謝謝!
'glGetFloatv'返回當前投影矩陣。但你是如何設置它的? – ybungalobill
@ybungalobill我已經通過opengl渲染了一個模型,矩陣似乎是通過我在qt opengl渲染過程中調用的gluperspective來設置的。我搜索了它,很多人都說這是OpenGL3.0的棄用場景,爲什麼它在我的4.4版本環境中工作?我是OpenGL的新手,這讓我很困惑> _ < – YanmingJIA