OpenGL之gluPerspective浅析
gluPerspective是OpenGL中的一個函數。
函數的原型
gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
fovy:視角的大小。什么是視角?視景體到視線原點之間所成的上下角度。
aspect:寬和高的比例。
zNear:觀察點與近側裁剪平面的距離。
zFar:觀察點與遠側裁剪平面的距離。
zNear和zFar說明了對于繪制的圖形,它與視線原點的距離必須是在兩者之間。
函數的作用
設置透視投影矩陣,什么意思呢?我們知道,我們看東西的時候,越遠的東西,看起來越小,反之越大。這個函數就是這樣一個作用,使我們繪制的圖形存在一個遠近大小不同的效果。
舉個例子:
我們繪制相同長度(長度為2個單位)的線段,但是它們的z軸不同。
[cpp]?view plain?copy我們看到,兩條線段z軸相差4個單位。
通過運行結果可以看到兩條線段存在了一個遠近大小不同的關系。
視角的影響
視角(范圍為0~180度)對于繪制圖形有什么影響呢?
當視角為0度時,這就相當于我們的眼睛閉起來了,那就神馬也看不到了。
當視角為180度時,這說明我們的視野無限大,那么同樣也啥都看不到了,因為繪制的圖形,相對于“視界”來說實在太小,小到可以忽略了。
所以選擇一個合適的視角尤為重要(一般45度最適合,不過具體情況具體分析)。
那通過視角怎么實現遠近大小不同的效果的呢?
我們來看一下下面3張圖:
從上面3張圖中,你是否看出點什么了嘛?通過改變視角的大小,相應地,投影到窗口中的圖像也放生了大小上的改變,從而,給人一種遠近的效果。
可以去下載一下Nate Robin的程序包,運行一下里面的projection.exe文件,然后自己試著調節參數,就能更加的清晰了。
To be continued~
總結
以上是生活随笔為你收集整理的OpenGL之gluPerspective浅析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样进入服务器修改东西,进入服务器修改数
- 下一篇: 为什么要学习C++,它到底能做什么?