渲染3D場景時頂點在最終被渲染到屏幕上之前需經過四類變換
變換(TRANSFORMATION) | 簡介 |
視圖變換(VIEW transformation) | 設定攝影機CAMERA的位置 |
模型變換(MODEL transformation) | 移動、旋轉、縮放多邊型模型,將模型局部坐標轉為世界坐標. |
投影變換(PROJECTION transformation) | 設定視口面積和裁剪平面,用於確定那些多邊型模型位於視口之內. |
視口變換(Viewport transformation) | 將剪切坐標影射到2D視口(屏幕) |
模型視圖變換(modelview transformation) | OpenGL將視圖變換與模型變換組合成單獨的模型視圖變換 |
視圖變換(VIEW transformation) 即攝影機的設定有三種放法,先將觀察矩陣載入單位矩陣glLoadIdentity();相機為於原點,朝向為負Z軸,上方向量為正Y軸.
視圖變換(VIEW transformation) | 簡介 |
gluLookAt () | 設定攝影機的位置和方向 |
glRotatef ()與glTranslatef() | 攝影機CAMERA固定在原點,使用旋轉和平移在世界坐標中移動所有模型 |
模型變換(MODEL transformation)是指通過平移、縮放、旋轉將模型定位與定向
模型變換(MODEL transformation) | 簡介 |
平移glTranslatef() | 模型沿向量進行移動 |
旋轉glRotatef() | 模型繞向量進行旋轉 |
縮放glScalef() | 在XYZ三軸指定不同縮放係數放大或縮小模型 |
投影變換(PROJECTION transformation)是指設定視口面積和裁剪平面,它在模型變換與視圖變換之後執行,用於確定那些多邊型模型位於視口之內.在設定投影之前需要選擇投影矩陣堆棧glMatrixMode(GL_PROJECTION);和載入單位矩陣glLoadIdentity();OpenGL支持兩類投影
投影變換(PROJECTION transformation) | 簡介 |
透視投影
glFrustum() gluPerspective() |
用於3D世界的顯示與真實世界一樣, 多邊型模型呈現近大遠小 |
正交投影
glOrtho() gluOrtho2D() |
不考濾與攝影機的距離,顯示多邊型模型真實的大小,常用於CAD軟件和2D遊戲 |
視口變換(Viewport transformation)發生在投影變換之後,視口是指渲染的2D窗口的大小和方向
視口變換(Viewport transformation) | 簡介 |
glViewport() | 每當窗口大小發生改變都要重設視口大小 |
OpenGL的變換運算均對矩陣堆棧的棧頂進行操作.
OpenGL矩陣堆棧 | 簡介 |
Modelview Matrix Stack | 模型視圖矩陣堆棧 |
Projection Matrix Stack | 投影矩陣堆棧 |
TEXTURE Matrix Stack | 紋理矩陣堆棧 |
ATTRIB Matrix Stack | 屬性矩陣堆棧 |
CLIENT ATTRIB Matrix Stack | 剪切屬性矩陣堆棧 |
NAME Matrix Stack |