圖形學(xué)實(shí)驗(yàn)指導(dǎo)書(shū)2009(1)_第1頁(yè)
圖形學(xué)實(shí)驗(yàn)指導(dǎo)書(shū)2009(1)_第2頁(yè)
圖形學(xué)實(shí)驗(yàn)指導(dǎo)書(shū)2009(1)_第3頁(yè)
圖形學(xué)實(shí)驗(yàn)指導(dǎo)書(shū)2009(1)_第4頁(yè)
圖形學(xué)實(shí)驗(yàn)指導(dǎo)書(shū)2009(1)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、OpenGL 簡(jiǎn)介一、 OpenGL 概述OpenGL 是圖形硬件的一個(gè)軟件接口( GL 代表圖形庫(kù), Graphics Library )。使用 OpenGL,可以對(duì)計(jì)算機(jī)圖形技術(shù)進(jìn)行控制,產(chǎn)生逼真的現(xiàn)實(shí)世界的圖象或虛擬的現(xiàn)實(shí)世界 所沒(méi)有的圖象。 OpenGL 包括了大約 250 個(gè)不同的函數(shù),程序員可以用這些函數(shù)指定物體和 操作, 創(chuàng)建交互性三維應(yīng)用程序, 而不必為許多應(yīng)用程序中通用的標(biāo)準(zhǔn)函數(shù)編寫(xiě)代碼, 同時(shí) 使應(yīng)用程序避免接觸過(guò)多的硬件細(xì)節(jié)。OpenGL 主要關(guān)注圖象的渲染,即根據(jù)幾何圖形對(duì)象的規(guī)范及其屬性,使用虛擬的照相 機(jī)和光源來(lái)構(gòu)成一幅圖象。Open GL是 跨平臺(tái)的一種應(yīng)用程序接

2、口( AppI ication Programmer's Interface, API ),因此不包含輸入和視窗操作。對(duì)于視窗管理,我們選用 OpenGL 應(yīng)用工具包 GLUT ( OpenGL Utility Toollkit )。二、 OpenGL 的組成在微機(jī)版本中, OpenGL 主要由三個(gè)函數(shù)庫(kù)組成,它們是核心庫(kù)、實(shí)用函數(shù)庫(kù)和編程輔 助庫(kù)。OpenGL 的核心庫(kù)包含了 OpenGL 最基本的命令函數(shù)。在這個(gè)庫(kù)中,提供了一百多個(gè)函 數(shù),這些函數(shù)的函數(shù)名都以“ gl ”為前綴。這些函數(shù)用來(lái)建立各種各樣的幾何模型、進(jìn)行坐 標(biāo)變換、產(chǎn)生光照效果、進(jìn)行紋理映射、產(chǎn)生霧化效果等幾乎所有的

3、二維和三維圖形操作。 這一百多個(gè)基本函數(shù)由于使用各自不同的參數(shù)而導(dǎo)致格式的變形, 派生出數(shù)百個(gè)命令。 而且, 對(duì)于不同的硬件和軟件平臺(tái), 這些函數(shù)的使用是完全相同的, 這個(gè)特性決定了 OpenGL 的可 移植性。OpenGL 的核心庫(kù)提供了創(chuàng)建基本幾何圖元的函數(shù), 通過(guò)基本幾何圖元的各種組合創(chuàng)建 其它幾何模型, 幾何模型也可稱為物體。 為了減少編程負(fù)擔(dān), OpenGL 實(shí)用函數(shù)庫(kù)提供了 40 多個(gè)創(chuàng)建常用的幾何對(duì)象函數(shù),立方體、二次曲面等。OpenGL實(shí)用庫(kù)中函數(shù)的函數(shù)名以 “glu” 為前綴,所有函數(shù)都是利用核心庫(kù)中函數(shù)編寫(xiě),使用方法和核心庫(kù)中函數(shù)的使用方法相同。由于 OpenGL 是一個(gè)圖

4、形標(biāo)準(zhǔn),獨(dú)立于任何操作系統(tǒng)和窗口系統(tǒng), OpenGL 中沒(méi)有提供 窗口管理和消息事件響應(yīng)的函數(shù), 也沒(méi)有從鼠標(biāo)和鍵盤(pán)讀取事件的功能。 因此, 在不同的操 作系統(tǒng)都設(shè)計(jì) OpenGL 了額外的編程輔助庫(kù) 提供一些基本的窗口管理函數(shù)、 事件處理函數(shù), 例如定義窗口的大小、 處理鍵盤(pán)和鼠標(biāo)事件等。 Windows 操作系統(tǒng)下的編程輔助庫(kù)中函數(shù)的 函數(shù)名以“ aux”為前綴。這些編程輔助庫(kù)是依賴于具體操作系統(tǒng)的,為了支持跨平臺(tái),SGI公司的Mark Kilgard編寫(xiě)了 GLUT , GLUT中函數(shù)的函數(shù)名以“glut"為前綴。現(xiàn)在,在Windows 操作系統(tǒng) GLUT 已經(jīng)取代了 AUX

5、庫(kù)。三、 OpenGL 的功能1、根據(jù)幾何圖元?jiǎng)?chuàng)建形狀,建立物體的幾何模型。OpenGL 中包括兩種圖元:幾何圖元和圖象圖元。幾何圖元包括:點(diǎn)、直線段、三角形、四邊形和多邊形,這些圖元通過(guò)頂點(diǎn) 指定。圖象圖元,例如位圖。2、在三維空間中排列物體,并選擇觀察復(fù)合場(chǎng)景的有利視角;3、計(jì)算所有物體的顏色。顏色可以由應(yīng)用程序明確指定,也可以根據(jù)特定的光照條件 來(lái)確定,或通過(guò)把紋理表面貼到物體表面得到。4、把物體的數(shù)學(xué)描述以及和它們相關(guān)的顏色信息轉(zhuǎn)換為屏幕上的像素。四、基于 C 語(yǔ)言和 OpenGL 的圖形程序開(kāi)發(fā)基礎(chǔ).疋1、 基于C語(yǔ)言和OpenGL的圖形程序結(jié)構(gòu):根據(jù)需要在C語(yǔ)言程序中嵌入 Open

6、GL命令。2、程序中一般包括以下三個(gè)部分:(1)應(yīng)用程序初始化;(2)生成并繪制圖象;(3)main函數(shù)中調(diào)用(1)和(2)中的函數(shù)。3、OpenGL命令格式和數(shù)據(jù)類型OpenGL命令就是OpenGL中的函數(shù)調(diào)用,命令名稱就是函數(shù)名,命令中的參數(shù)就是函 數(shù)調(diào)用所需的參數(shù)。OpenGL函數(shù)命名約定:函數(shù)名餓頭幾個(gè)字母說(shuō)蜜柑內(nèi)該函數(shù)來(lái)自哪個(gè)庫(kù),后面部分包 含一個(gè)根命令,一般是一個(gè)英文單詞(第一個(gè)字母必須大寫(xiě)),表示該函數(shù)的功能,后綴中的數(shù)字和字母分別表示參數(shù)的個(gè)數(shù)和類型。例如:命令 glColor3f(1.0,1.0,1.0);前綴“gl”表示該函數(shù)屬于核心庫(kù), 令有三個(gè)參數(shù),參數(shù)類型為浮點(diǎn)數(shù),

7、是C語(yǔ)言格式中所要求的。如果 指向矢量或數(shù)組的指針參數(shù),例如:GLfloat color =1.0,1.0,1.0;glColor3fv(color);“Color ”表示該命令的功能為著色,“ 3f”表示該命(1.0,1.0,1.0)是函數(shù)調(diào)用時(shí)的具體參數(shù),最后的分號(hào)“;”O(jiān)penGL命令的后綴有一個(gè)字母“ v”,表示該命令有一個(gè)OpenGL命令中后綴表示的數(shù)據(jù)類型對(duì)應(yīng)的OpenGL類型對(duì)應(yīng)的C語(yǔ)言類型b8位整數(shù)GLbyteSigned chars16位整數(shù)GLshortshorti32位整數(shù)GLint, GLsizeilongf32位浮點(diǎn)數(shù)GLfloat,GLclampffloatd64位

8、浮點(diǎn)數(shù)GLdouble, GLclampddoubleub8位無(wú)符號(hào)整數(shù)GLubyte, GLbooleanun sig ned charus16位無(wú)符號(hào)整數(shù)GLshortun sig ned shortui32位無(wú)符號(hào)整數(shù)GLui nt, GLe num, GLbitfieldun sig ned long說(shuō)明一個(gè)浮點(diǎn)型的數(shù)組color, GLfloat是數(shù)據(jù)類型/數(shù)組color作為參數(shù)3個(gè)或4個(gè),參數(shù)類型見(jiàn)下表:OpenGL命令后綴及對(duì)應(yīng)的數(shù)據(jù)類型4、OpenGL中定義的符號(hào)常量OpenGL中的符號(hào)常量,以大寫(xiě)字母GL_或GL_開(kāi)頭,表示屬于哪個(gè)庫(kù),所有字母都大 寫(xiě),單詞之間用下劃線連接。

9、例如,5、頭文件 gl.h、glu.h 和 glut.hOpenGL核心庫(kù)的函數(shù)、類型和宏GL_COLOR_BUFFER_BIT ,表示顏色緩沖區(qū)。(符號(hào)常量)的原型包括在頭文件gl.h中,實(shí)用函數(shù)OpenGL命令中的參數(shù)個(gè)數(shù)可能使個(gè)、庫(kù)的原型包括在頭文件glu.h中,應(yīng)用工具包 GLUT的原形4包括在頭文件glut.h中。OpenGL是一個(gè)標(biāo)準(zhǔn)的程序庫(kù),Win dows系統(tǒng)運(yùn)行 OpenGL程序,需要在 windowssystem32文件夾包含動(dòng)態(tài)連接庫(kù)opengl32.dll和glu32.dll,使用 GLUT的用戶還需要包含動(dòng)態(tài)連接庫(kù)glut32.dll。編譯OpenGL程序需要有頭文件

10、gl.h和glu.h,使用GLUT的用戶需要頭文件 glut.h,因?yàn)間lut.h包括了 gl.h和glu.h,所以僅用glut.h即可;還需要庫(kù)文 件 opengl32.lib、glu32.lib 和 glut32.lib。五.OpenGI命令 命令: glClearColor 函數(shù)原型: void gICIearCoIor(GLcIampf red,GLcIampf green,GLcIampf bIue,GLcIampf aIph); 功能:將緩存的當(dāng)前清楚顏色設(shè)置為給定的顏色值(red,green,bIue,aIpha);參數(shù):(red,green,blue指定RGB顏色空間的一個(gè)顏色

11、值,alpha指定透明度。 命令: gICIear 函數(shù)原型: void glClear(GLbitfield mask);功能:用當(dāng)前的清楚值清楚 1 種或多種緩沖區(qū)。參數(shù):mask指定需要清除的緩沖區(qū)。緩沖區(qū)對(duì)應(yīng)的mask值見(jiàn)表1.1。如果需要同時(shí)清除多種緩沖區(qū),則將表中的多個(gè)值通過(guò)邏輯或(|)組合在一起表示 msk 值。例如:同時(shí)清除顏色緩沖區(qū)和深度緩沖區(qū)。 mask=GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT 。命令: glColor3f 函數(shù)原型: void glColor3f(GLfloat red,GLfloat green,GLfloat b

12、lue); 功能:將當(dāng)前的顏色值設(shè)置為指定的 RGBA 模式顏色值( red,green,blue,1.0f), 其中 1.0f 為默認(rèn)的混合因子數(shù)值。參數(shù):(red,green,blue,指定顏色值的R、G、B三個(gè)分量每個(gè)分量的取值范圍 均為區(qū)間 0.0,1.0。命令: S 函數(shù)原型: Bool S(HDC hdc); 功能:交換緩沖區(qū),將繪制完成的緩存圖像顯示在屏幕上。 要求采用雙緩存機(jī)制。 參數(shù): hdc 指定設(shè)備上下文。返回值:如果函數(shù)執(zhí)行成功,返回 TRUE ,否則,返回 FALSE。 命令: glOrtho函數(shù)原型: void glOrtho(GLdouble left,GLdou

13、ble right,GLdouble bottom, GLdouble top,GLdouble zNear,GLdouble zFar);功能:產(chǎn)生正平行投影變換矩陣。 參數(shù): left、 right 分別為裁剪矩形體的左、右側(cè)兩個(gè)裁剪平面的 X 軸坐標(biāo)值。bottom、top分別為裁剪矩形體的底、頂端兩個(gè)裁剪平面的丫軸坐標(biāo)值。(-zNear)、( zFar)分別為裁剪矩形體的近、遠(yuǎn)端兩個(gè)裁剪平面的 Z 軸坐標(biāo)值。命令: glFrustum 函數(shù)原型: void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,功能:參數(shù):GLdo

14、uble top,GLdouble zNear,GLdouble zFar); 產(chǎn)生透視投影變換矩陣。命令:函數(shù)原型: void gluPerspective(GLdouble fovy,GLdouble aspect, GLdouble zNear,GLdouble zFar);功能:產(chǎn)生對(duì)稱透視投影變換矩陣。left、 right 分別為裁剪四棱臺(tái)上底面矩形的左、 右側(cè)兩條邊的 X 軸坐標(biāo)值。 bottom、 top 分別為裁剪四棱臺(tái)上底面矩形底、 頂端兩條邊的 丫 軸坐標(biāo)值。 (zNear)、( zFar)分別為裁剪矩形體的近、遠(yuǎn)端兩個(gè)裁剪平面的 Z 軸坐標(biāo)值。gluPerspectiv

15、e參數(shù): fovy 裁剪四棱臺(tái)在 Y 方向上的兩個(gè)側(cè)面夾角的度數(shù), 0<fovy<180。asp ect裁剪四棱臺(tái)上底面命令: glViewport函數(shù)原型: void glViewport(GLint x0,GLint y0,GLsizei width,GLsizei height); 功能:產(chǎn)生視口變換,將在三維空間中可以顯示在屏幕上的點(diǎn)映射到視口中。 參數(shù): x0,y0 視口左下角點(diǎn)在視圖窗口坐標(biāo)下的坐標(biāo)值;width 視口的寬度;height 視口的高度。命令: glVertex3d函數(shù)原型: void glVertex3d(GLdouble x,GLdouble y,GL

16、double z); 功能:用在一對(duì)函數(shù) glBegin 和 glEnd 之間,用來(lái)指定一個(gè)頂點(diǎn)的坐標(biāo)值。 參數(shù): x, y,z 頂點(diǎn)坐標(biāo)的三個(gè)分量。命令:gIBegin 和 glEnd函數(shù)原型: void glBegin(GLenum mode);void glEnd(void);功能:函數(shù) glBegin 和 glEnd 共同組成一個(gè)函數(shù)對(duì)。在函數(shù) glBegin 和 glEnd 之 間的語(yǔ)句定義了一個(gè)或一組圖形元素的頂點(diǎn)坐標(biāo)、顏色和法向量等信息。 同時(shí)函數(shù) glBegin 的參數(shù) mode 指定圖形元素的類型。參數(shù): mode 指定圖形元素的類型。參數(shù) mode 所有可能取值及其含義如下

17、:GPOINTS :要求在gIBegin和glEnd之間至少包含一個(gè)頂點(diǎn), 每個(gè)頂點(diǎn) 都是孤立的點(diǎn)。GL_LINES :要求在gIBegin和glEnd之間至少包含兩個(gè)頂點(diǎn),如果有 2n 個(gè)頂點(diǎn),生成 n 條直線段。GL_LINE_LOOP :要求在 glBegin 和 glEnd 之間至少包含兩個(gè)頂點(diǎn),依次 相連生成一個(gè)封閉的環(huán)。GL_LINE_STRIP :要求在 glBegin 和 glEnd 之間至少包含兩個(gè)頂點(diǎn), 依次 相連生成一條折線段。GL_TRIANGLES :要求在 glBegin 和 glEnd 之間至少包含三個(gè)頂點(diǎn), 如果 有 3n 個(gè)頂點(diǎn),生成 n 個(gè)三角形。GL_TR

18、IANGLE_STRIP :要求在 glBegin 和 glEnd 之間至少包含三個(gè)頂點(diǎn),如果有n個(gè)頂點(diǎn),生成(n2)個(gè)二角形組成的帶。GL_TRIANGLE_FAN :要求在glBegin和glEnd之間至少包含三個(gè)頂點(diǎn),如果有 n 個(gè)頂點(diǎn),生成 (n 2)個(gè)三角形組成的扇。GL_QUADS :要求在glBegin和glEnd之間至少包含四個(gè)頂點(diǎn),如果有 4n 個(gè)頂點(diǎn),生成 n 個(gè)四邊形。GL_QUAD_STRIP :要求在glBegin和glEnd之間至少包含四個(gè)頂點(diǎn), 如果有n個(gè)頂點(diǎn),生成(n 1)個(gè)四邊形組成的帶。GL_POLYGON :要求在 glBegin 和 glEnd 之間至少

19、包含三個(gè)頂點(diǎn),對(duì)于 n 個(gè)頂點(diǎn),一次相連組成一個(gè)多邊形。實(shí)驗(yàn)一實(shí)驗(yàn)?zāi)康模菏煜?VC+控制臺(tái)編程環(huán)境,掌握基于C語(yǔ)言的OpenGL編程結(jié)構(gòu)。實(shí)驗(yàn)內(nèi)容:1. GLUT 工具包的安裝;2. 基于 VC+ 控制臺(tái)的 C 語(yǔ)言編程;3. VC+ 控制臺(tái)編程環(huán)境與 OpenGL 的連接;4. 基于 VC+ 控制臺(tái)的 OpenGL 編程; 實(shí)驗(yàn)過(guò)程:一.閱讀以下程序,掌握基于C語(yǔ)言的OpenGL編程結(jié)構(gòu):1. 源程序#include <windows.h>#include <gl/glut.h>void display(void) glClearColor(0.0f,0.0f,1.0

20、f,1.0f); glClear(GL_COLOR_BUFFER_BIT); glFlush();void main(int &argc,char *argv) glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutCreateWindow("hello"); glutDisplayFunc( display); displayMainLoop();2. 程序內(nèi)容理解(1) 兩個(gè)包含文件#include <windows.h> 包含了 windows 環(huán)境下編程所

21、需要的信息。#include <gl/glut.h> 包含了 OpenGL 編程所需要的信息。第一(2) main 函數(shù) glutInit(&argc,argv); 初始化 GLUT 庫(kù),使系統(tǒng)識(shí)別 GLUT 庫(kù)中的命令。 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); 告訴 GLUT 庫(kù)在創(chuàng)建窗口時(shí)使用的 顯示模式和顏色模型,其中參數(shù) GLUT_SINGLE 指定單緩沖顯示模式,繪圖命令在用于顯 示的窗口執(zhí)行。 參數(shù) GLUT_RGB 指定 RGBA 顏色模型。 單緩沖顯示模式不能做動(dòng)畫(huà), 個(gè)參數(shù)的另一種選擇是 GLUT_DOUBLE

22、 ,指定雙緩沖顯示模式,可以作動(dòng)畫(huà)。第二個(gè)參數(shù) 的其它選擇現(xiàn)在不常用, RGBA 顏色模型通過(guò)設(shè)置紅、綠 ,、三種顏色的成分來(lái)確定顏色。glutCreateWindow("hello"); 創(chuàng)建應(yīng)用程序窗口,參數(shù)指定窗口標(biāo)題。 glutDisplayFunc( display); 通過(guò)調(diào)用用戶程序繪制圖形。displayMainLoop(); 只能放在 main 函數(shù)的最后,所有已經(jīng)創(chuàng)建的窗口將在此時(shí)顯示, 對(duì)創(chuàng)建窗口的繪制開(kāi)始生效,事件處理開(kāi)始啟動(dòng)。( 3 ) display 函數(shù)紅、綠、藍(lán)的成分,每個(gè)成分在01 (伙伴0255)0 表示透明, 1 表示不透明。用 glC

23、learColor 命令指定的顏色清除顏色緩沖區(qū)中 BIT 代表顏色緩沖區(qū)。glClearColor(0.0f,0.0f,1.0f,1.0f); 設(shè)置顏色緩沖區(qū)的顏色為藍(lán)色,即設(shè)置背景色, 參數(shù)(0.0f, 0.0f, 1.0f, 1.0f)指定顏色中之間取值;最后一個(gè)參數(shù)指定是否透明,glClear(GL_COLOR_BUFFER_BIT); 原來(lái)的顏色,參數(shù) GL_COLOR_BUFFER_glFlush(); 用于刷新 OpenGL 中的命令隊(duì)列,使所有未被執(zhí)行 OpenGL 命令得到執(zhí)行。 由于 OpenGL 內(nèi)部使用渲染(繪圖)流水線的順序處理命令, OpenGL 的命令常常會(huì)排隊(duì)并

24、 成批處理,以便優(yōu)化性能。 glFlush 函數(shù)告訴 OpenGL 應(yīng)該處理到目前為止收到的命令。命 令 glFinish() ;除了具有 glFlush() 的功能外,還等待圖形硬件和網(wǎng)絡(luò)的響應(yīng),但是性能沒(méi)有 glFlush() 高。3. 運(yùn)行程序glut.h, glut32.lib ,glut32.dll 。(1) 安裝 GLUT 工具包(只需一次) :先下載,解壓。 解壓后包含三個(gè)文件: 安裝過(guò)程:Windows 系統(tǒng)的 system32 文件夾中; VC 的 lib 文件夾中;* 將 glut32.dll 復(fù)制到* 將 glut32.lib 復(fù)制到* 將 glut.h 復(fù)制到 VC 的

25、 includeGL 文件夾中。(2) 啟動(dòng) VC+ ,創(chuàng)建基于控制臺(tái)的程序框架* 啟動(dòng) VC+( 3)設(shè)置 OpenGL 編程環(huán)境* 在應(yīng)用程序窗口,選擇“ Project” 7 “ Settings ”* 在“ Object/Library Modules ”一欄中加入: 兩個(gè)文件名以及與原有內(nèi)容之間用空格間隔。( 4 )運(yùn)行程序* 輸入代碼;* 編譯和連接:在應(yīng)用程序窗口,選擇“ Build* 運(yùn)行:在應(yīng)用程序窗口,選擇“ Build ”7“( 5)編譯、修改7“ Link ”opengl32.Lib 、 glu32.Lib”7“ Compile ”或“ Build Execute ”或

26、工具欄按鈕“!、glut32.Lib”?!眻?zhí)行程序。* 窗口最下方顯示編譯和連接信息, 如果編譯出錯(cuò), 雙擊錯(cuò)誤信息, 系統(tǒng)自動(dòng)定位到程序中 的出錯(cuò)語(yǔ)句,修改后再次編譯。4. 程序運(yùn)行結(jié)果:該程序僅創(chuàng)建一個(gè)系統(tǒng)默認(rèn)的應(yīng)用程序窗口。save Project”glClearColor 命令中參數(shù),觀察應(yīng)用程序窗口的顏色變化。Clear Project ”5. 保存 在應(yīng)用程序窗口,選擇“ 6修改 display 函數(shù)中的 7.清除程序(內(nèi)存) 在應(yīng)用程序窗口,選擇“二閱讀以下程序 ,掌握應(yīng)用程序窗口參數(shù)的設(shè)置和渲染對(duì)象的顏色設(shè)置(前景色)1. 源程序#include <windows.h&g

27、t;#include <gl/glut.h>void init() glClearColor(0.0,0.0,1.0,1.0);void display(void) glClear(GL_COLOR_BUFFER_BIT); giColor4f(0.0,1.0,1.0,1.0); glRotatef(60,1.0,1.0,1.0); glutWireCube(0.8); glFlush();void main(int &argc,char *argv) glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT

28、_RGB); glutIniWindowSize(200,200);glutIniWindowPosition(100,100);glutCreateWindow("cube");init();glutDisplayFunc( display);displayMainLoop();2. 程序內(nèi)容理解(1) main 函數(shù)glutIniWindowSize(200,200); 設(shè)置應(yīng)用程序窗口的大小,參數(shù)表示寬和高。glutIniWindowPosition(100,100); 設(shè)置應(yīng)用程序窗口的位置,參數(shù)表示窗口的左上角坐 標(biāo)。(2) init 函數(shù)init 函數(shù)中。從 m

29、ain 函數(shù)init 函數(shù)設(shè)置應(yīng)用程序的初始化,其中包括應(yīng)用程序啟動(dòng)時(shí)執(zhí)行的代碼,并且往往只執(zhí) 行一遍。因?yàn)轭伾彌_區(qū)的顏色設(shè)置不經(jīng)常變化,所以將其放入 中的調(diào)用次序可以看出,與程序一中代碼的寫(xiě)法沒(méi)有本質(zhì)區(qū)別。(3) display 函數(shù)(0.0,1.0,1.0,1.0)的含義和解釋giColor4f(0.0,1.0,1.0,1.0); 設(shè)置渲染對(duì)象的顏色,其中參數(shù)與 glClearColor(0.0f,0.0f,1.0f,1.0f); 相同。glRotatef(60,1.0,1.0,1.0); 將繪制圖象旋轉(zhuǎn) 60 度。參數(shù)(60, 1.0, 1.0, 1.0)表示(旋轉(zhuǎn)角度,x軸,y軸,z

30、軸)。其中,對(duì)應(yīng)x軸、y軸、z軸的數(shù)值,如果為1表示饒?jiān)撦S旋轉(zhuǎn),為 0表示不饒?jiān)撦S旋轉(zhuǎn)。glutWireCube(0.8);繪制一個(gè)邊長(zhǎng)為 0.8的線框(Wire)立方體(Cube)。3. 運(yùn)行、保存和清除程序同程序一。4. 觀察并分析程序運(yùn)行結(jié)果。5. 修改程序(1) 修改立方體的顏色;(2) 修改立方體的旋轉(zhuǎn)角度;(3) 修改應(yīng)用程序窗口的大小和在屏幕顯示位置。三.glutWireCube(GLdouble size);繪制 GLUT 中的三維物體1. GLUT中的三維物體:命令中“ Solid”表示實(shí)心物體,“ Wire”圖形。下面僅給出函數(shù)原型,命令的使用利用C語(yǔ)言知識(shí)調(diào)用。(1) 立

31、方體函數(shù)原型:glutWireCube(GLdouble size);glutSolidCube(GLdouble size);功能:繪制一個(gè)邊長(zhǎng)為siaze的立方體,立方體中心位于原點(diǎn)。參數(shù)說(shuō)明:size為立方體的邊長(zhǎng)。(2) 圓錐體數(shù)原型:glutWireCo ne(GLdouble base,GLdouble height,GLi nt slices,GLi nt stacks); glutSolidC on e(GLdouble base,GLdouble height,GL int slices,GL int stacks);功能:繪制一個(gè)圓錐體,圓錐底面中心位于坐標(biāo)原點(diǎn)(0,0,0

32、),圓錐頂點(diǎn)位于z軸上。參數(shù)說(shuō)明:base圓錐底面半徑,height圓錐高。slices環(huán)繞z軸的剖面數(shù),stacks沿著z軸的剖面數(shù)。(3) 正十二面體函數(shù)原型:glutWireDodecahedro n( void);glutSolidDodecahedr on( void);功能:繪制一個(gè)正十二面體,中心位于原點(diǎn),半徑為73O參數(shù)說(shuō)明:沒(méi)有參數(shù)。(4) 正二十面體函數(shù)原型:glutWirelcosahedro n( void); glutSolidIcosahedr on( void);功能:繪制一個(gè)正二十面體,中心位于原點(diǎn),半徑為 參數(shù)說(shuō)明:(5)函數(shù)原型:沒(méi)有參數(shù)。glutWireO

33、ctahedr on( void);glutSolidOctahedro n( void);功能:繪制一個(gè)正八面體,中心位于原點(diǎn),半徑為1。參數(shù)說(shuō)明:沒(méi)有參數(shù)。(6)函數(shù)原型:glutWireS phere(GLdouble radius,GLi nt slices,GLi nt stacks);glutSolidS phere(GLdouble radius,GL int slices,GL int stacks);功能:繪制一個(gè)球體,球體的中心位于原點(diǎn),半徑為 radius。參數(shù)說(shuō)明:Radius球體半徑,slices環(huán)繞z軸的剖面數(shù),即球體的經(jīng)線數(shù)目,stacks沿著z軸的剖面數(shù), 即球體的緯線數(shù)目。(7)函數(shù)原型:glutWireTetrahedro n( void);glutSolidetrahedro n( void);功能:繪制一個(gè)正四面體,中心位于原點(diǎn),半徑為V3。glutWireTorus(GLdouble inn erRadius,GLdouble outerRadius,GL int slices,GL int stacks); glutSolidTorus(GLdouble inn erRadius,GLdouble outerRadius,GL int slices,GL int stacks); 功能:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論