openGL 平行投影和透視投影函式分析

2021-07-02 20:52:39 字數 1926 閱讀 8870

glviewport(glint x, glint y, glsizei width, glsizei height);

在視窗中定義乙個畫素矩形,最終的影象會對映到這個矩形中。(x,y)指定了的視口的左下角,width和height指定了這個視口矩形的寬度和高度。在預設情況下,視口的初始值為(0, 0, winwidth, winheight),其中winwidth和winheight指定了視窗大小。你可以將其想像為數位相機的顯示屏,是最終成像的地方。

glulookat(gldouble eyex, gldouble eyey, gldouble eyez, gldouble centerx, gldouble centery, gldouble centerz, gldouble upx, gldouble upy, gldouble upz);

定義乙個檢視矩陣,並將其與當前矩陣相乘。目標觀察點由eyex,eyey,eyez指定,centerx, centery, centerz指定了視線上的任意一點。upx,upy和upz指定表示哪個方向是向上的(也就是說,在視景體中至下向上的方向)。你可以將其想像為乙個數位相機,放置在一定的位置並使鏡頭指向乙個方向。預設值為glulookat(0.0, 0.0, 0.0, 0.0, 0.0, -100.0, 0.0, 1.0, 0.0),表示數位相機位於原點並指向z軸負方向,以y軸的正方向為向上方向。

glfrustum(gldouble left, gldouble right, gldouble bottom, gldouble top, gldouble znear, gldouble zfar);

建立乙個表示透視檢視平截頭體的矩陣,並把它與當前矩陣相乘。如果觀察點為預設情況時,平截頭體的視景體是由這個函式的引數定義:(left, bottom, -znear)和(right, top, -znear)分別指定了近側裁剪平面左下角和右上角的(x,y,z)座標。znear和zfar分別表示從觀察點到近側和遠側裁剪平面的距離,它們都應該是正值。你可以將其想像為數位相機的視野範圍(視景體)。

gluperspective(gldouble fovy, gldouble aspect, gldouble znear, gldouble zfar);

建立乙個表示透視檢視平截頭體的矩陣,並把它與當前矩陣相乘。fovy是yz平面上視野的角度,它的值必須在[0.0, 180.0]之間。aspect是這個平截頭體的橫縱比,也就是寬度除以高度。如果觀察點為預設情況時,znear和zfar分別表示從觀察點到近側和遠側裁剪平面的距離,它們都應該是正值。該函式是glfrustum(...)函式的替代函式。

視景體有兩個用途。首先,視景體定義了乙個場景如何對映到螢幕上(即通過透視投影還是正投影);其次,視景體定義了哪此場景(或場景的一部分)被剪裁到最終的影象之外。

透視投影:與我們平時眼睛所見到的物體一樣,滿足近大遠小的原則;正投影:不論物體距離觀察點的遠近,我們所看到物體的大小保持不變。

glortho(gldouble left, gldouble right, gldouble bottom, gldouble top, gldouble znear, gldouble nfar);

建立乙個表示正交平行視景體的矩陣,並把它與當前矩陣相乘。如果觀察點為預設情況時,正交平行視景體是由這個函式的引數定義:(left, bottom, -znear)和(right, top, -znear)分別指定了近側裁剪平面左下角和右上角的(x,y,z)座標。znear和zfar分別表示從觀察點到近側和遠側裁剪平面的距離,它們可以為正值或負值,甚至可以設定為0,但不能取相同的值。你可以將其想像為數位相機的視野範圍(視景體)。

glortho2d(gldouble left, gldouble right, gldouble bottom, gldouble top);

建立乙個表示將二維座標投影到螢幕上的矩陣,並把它與當前矩陣相乘。剪裁區域為矩形,(left, bottom)和(right, top)分別表示剪裁區域的左下角和右上角的座標。該函式為glortho的二維版本。

OpenGL學習十 視口,正投影,透視投影

正投影 將物體直接投影到螢幕上,不改變其大小 glortho gldouble left,gldouble right,gldouble bottom,gldouble top,gldouble znear,gldouble zfar 透視投影 遠處的東西看起來要小一些,近處的東西看起來會大一些,這...

openGL學習筆記十四 透視投影

三維空間物體顯示近大遠小。透視投影區域是個稜錐體 透視投影顯示效果 透視投影 define glew static include include include include include pragma comment linker,subsystem windows entry maincr...

投影變換 透視投影和正交投影

2.3 投影變換 3.2.3.1 基本概念 在計算機圖形軟體中所採用笛卡爾 cartesian 直角三維座標系統,按照 z軸方向的不同有兩種形式 1 右手系統 當用右手握住 z軸時,大姆指指向 z軸的正方向 圖 3.20 a 其餘四個手指從x軸到 y軸形成乙個弧。2 左手系統 當用左手握住 z軸時,...