基於VC 的OpenGL程式設計講座之座標變換 3

2021-04-24 20:39:26 字數 935 閱讀 3421

(四)視口變換。

視口變換就是將視景體內投影的物體顯示在二維的視口平面上。運用相機模擬方式,我們很容易理解視口變換就是類似於**的放大與縮小。在計算機圖形學中,它的定義是將經過幾何變換、投影變換和裁剪變換後的物體顯示於螢幕視窗內指定的區域內,這個區域通常為矩形,稱為視口。opengl中相關函式是:

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

這個函式定義乙個視口。函式引數(x, y)是視口在螢幕視窗座標系中的左下角點座標,引數width和height分別是視口的寬度和高度。預設時,引數值即(0, 0, winwidth, winheight) 指的是螢幕視窗的實際尺寸大小。所有這些值都是以象素為單位,全為整型數。

(5)裁剪變換

在opengl中,除了視景體定義的六個裁剪平面(上、下、左、右、前、後)外,使用者還可自己再定義乙個或多個附加裁剪平面,以去掉場景中無關的目標,如圖六所示。

基於vc++的opengl程式設計講座之座標變換(圖六)

圖六、附加裁剪平面

附加平面裁剪函式為:

1、void glclipplane(glenum plane,const gldouble *equation);

函式引數equation指向乙個擁有四個系數值的陣列,這四個係數分別是裁剪平面ax+by+cz+d=0的a、b、c、d值。因此,由這四個係數就能確定乙個裁剪平面。引數plane是gl_clip_planei(i=0,1,...),指定裁剪面號。

在呼叫附加裁剪函式之前,必須先啟動glenable(gl_clip_planei),使得當前所定義的裁剪平面有效;當不再呼叫某個附加裁剪平面時,可用gldisable(gl_clip_planei)關閉相應的附加裁剪功能。

下面這個例子不僅說明了附加裁剪函式的用法,而且呼叫了gluperspective()透視投影函式,讀者可以細細體會其中的用法。例程如下:

基於VC 的OpenGL程式設計講座之曲線和曲面

天極軟體專題專區精選 到天極軟體 讀編交流區 暢所欲言 google專區 popo專區 qq專區 qq掛機 了解web2.0 處理數字暗房 ppt動畫演示教程 excel動畫教程集 word動畫演示教程 windows vista專區 特洛伊木馬專區 黑客知識教程專區 防火牆應用專區 登錄檔應用專區...

《基於MFC的OpenGL程式設計》系列文章

1,基於 mfc的 opengl 程式設計 part 1 a primer 2,基於 mfc的 opengl 程式設計 part 2 setting up opengl on windows 3,基於 mfc的 opengl 程式設計 part 3 drawing 2d shapes 4,基於 mf...

《基於MFC的OpenGL程式設計》系列文章

1,基於mfc的opengl程式設計 part 1 a primer 2,基於mfc的opengl程式設計 part 2 setting up opengl on windows 3,基於mfc的opengl程式設計 part 3 drawing 2d shapes 4,基於mfc的opengl程式...