我有一個程序做增強現實技術在OpenGL使用:glFrustum,gluPerspective和FOV
glFrustum(-near*centerImageX/(GLfloat)fx, near*(imageWidth-centerImageX)/(GLfloat)fx, near*(centerImageY-imageHeight)/(GLfloat)fy, near*centerImageY/(GLfloat)fy, near, far);
這是確定的,我得到了很好的觀點,我的3D對象以及插在我的照片。現在我想能夠放大/縮小。通常情況下,它通過改變gluPerspective中的fov來完成,但我不使用gluPerspective,因爲我無法獲得良好的插入。
隨着http://dmi.uib.es/~josemaria/files/OpenGLFAQ/transformations.htm,問題 「?9.085怎樣才能做出glFrustum(通話),我調用gluPerspective()匹配」,我試着用:
fov=360.0*atan(imageHeight/(2*fy))/Pi; //computed with parameters top and bottom of my glFrustum
aspect=-centerImageY*fx/(fy*(centerImageX-imageWidth)); //computed with parameters left and bottom of my glFrustum
無效glFrustum(GLdouble左,GLdouble右,GLdouble底部,GLdouble頂部,GLdouble近,GLdouble遠);
void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble near,GLdouble far);
然後:
gluPerspective(fov, aspect, near, far);
但我的目標是扭曲的,這不是正確的所有軸縮放比例不存。
那麼我需要做什麼/修改我的glFrustum參數來獲得放大/縮小效果?
我覺得你的邊界的計算在'glOrtho(近平面...)'可能是錯的。你的左和底錐臺從中心開始。通常該中心將是...中心。我期望看到* near(*)*(centerImageX-imageWidth/2.0)/(GLfloat)如果你正確導出它們,縱橫比應該與'imageHeight'和'imageWidth'的比率相關,並且與'centerImageX'無關。除非我在這裏錯過了一些基本的東西 –