0
說,我已經給了一個點[x,y,z]。我應用了一些變換矩陣(由縮放,旋轉和平移組成)。當然,我可以編寫自己的例程來獲得最終變換點的座標。在opengl中是否有任何內置函數可以相同..在opengl中的內置函數來獲得最終變換點的座標
這種類型的函數可能會被很好的優化,我寫的可能不會那麼有效。
說,我已經給了一個點[x,y,z]。我應用了一些變換矩陣(由縮放,旋轉和平移組成)。當然,我可以編寫自己的例程來獲得最終變換點的座標。在opengl中是否有任何內置函數可以相同..在opengl中的內置函數來獲得最終變換點的座標
這種類型的函數可能會被很好的優化,我寫的可能不會那麼有效。
您可以使用gluProject()
:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(90, 0, 0, 1);
GLdouble modelview[16] = { 0 };
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
GLdouble identity[16] = {
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1
};
GLint view[4] = { -1, -1, 2, 2 };
// rotate (1,0,0) by 90 degrees around the Z axis:
double x, y, z;
gluProject(1, 0, 0, modelview, identity, view, &x, &y, &z);
z = (z * 2) - 1;
// x,y,z should equal (0,1,0)
雖然你會更好使用適當的矩陣庫就像Eigen,因爲它只是一個矩陣向量乘法。
你提供了一些相當「舊」的openGL代碼。目前最好使用一些第三方庫(比如你寫的)。例如,我對GLM很滿意 – fen