1. 程式人生 > >OpenGL的glViewport()函式和glOrtho()函式用法

OpenGL的glViewport()函式和glOrtho()函式用法

glViewport()函式

在OpenGL初始化完成之後,我們應該進行一些檢視設定。首先是設定視見區域,即告訴OpenGL應把渲染之後的圖形繪製在窗體的哪個部位。當視見區域是整個窗體時,OpenGL將把渲染結果繪製到整個視窗。我們呼叫glViewPort函式來決定視見區域:

    procedure glViewPort(x:GLInt;y:GLInt;Width:GLSizei;Height:GLSizei);

    其中,引數X,Y指定了視見區域的左下角在視窗中的位置,一般情況下為(0,0),Width和Height指定了視見區域的寬度和高度。注意OpenGL使用的視窗座標和WindowsGDI使用的視窗座標是不一樣的。圖3.1-1表示了在WindowsGDI中的視窗座標,而圖3.1-2則是OpenGL所定義的視窗座標。

例如,要設定如圖3.1-3中的視見區域,我們應該呼叫函式:

      glViewPort(100,100,Width,Height);

 glOrtho是建立一個正交平行的視景體。 一般用於物體不會因為離螢幕的遠近而產生大小的變換的情況。比如,常用的工程中的製圖等。需要比較精確的顯示。 而作為它的對立情況, glFrustum則產生一個透視投影。這是一種模擬真實生活中,人們視野觀測物體的真實情況。例如:觀察兩條平行的火車到,在過了很遠之後,這兩條鐵軌是會相交於一處的。還有,離眼睛近的物體看起來大一些,遠的物體看起來小一些。

glOrtho(left, right, bottom, top, near, far), left表示視景體左面的座標,right表示右面的座標,bottom表示下面的,top表示上面的。這個函式簡單理解起來,就是一個物體擺在那裡,你怎麼去擷取他。這裡,我們先拋開glViewport函式不看。先單獨理解glOrtho的功能。 假設有一個球體,半徑為1,圓心在(0, 0, 0),那麼,我們設定glOrtho(-1.5, 1.5, -1.5, 1.5, -10, 10);就表示用一個寬高都是3的框框把這個球體整個都裝了進來。  如果設定glOrtho(0.0, 1.5, -1.5, 1.5, -10, 10);就表示用一個寬是1.5, 高是3的框框把整個球體的右面裝進來;如果設定glOrtho(0.0, 1.5, 0.0, 1.5, -10, 10);就表示用一個寬和高都是1.5的框框把球體的右上角裝了進來。上述三種情況可以見圖: