版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2成都理工大學(xué)計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)三維真實(shí)感圖形設(shè)計(jì)與繪制學(xué)生姓名: 郭耀中 學(xué) 號(hào): 201108030309年級(jí)專(zhuān)業(yè):軟件工程4班學(xué) 院:信息科學(xué)與技術(shù)學(xué)院四川·成都提交日期:2014年4月目錄一、簡(jiǎn)要說(shuō)明3二、實(shí)驗(yàn)題目31.題目?jī)?nèi)容說(shuō)明:32.技術(shù)要點(diǎn)說(shuō)明3三、需求分析41.課題設(shè)計(jì)思路4四、三維圖形的設(shè)計(jì)過(guò)程51.三維圖形設(shè)計(jì)的過(guò)程如下:52.設(shè)計(jì)過(guò)程說(shuō)明:6五、三維圖形的主程序71.部分源碼7六、設(shè)計(jì)結(jié)果14七、設(shè)計(jì)小結(jié)21 2計(jì)算機(jī)圖形學(xué)三維圖形設(shè)計(jì)與繪制一、 簡(jiǎn)要說(shuō)明OpenGL(Open Graphic Library) 是由SGI公司的 IRIS GL 圖形庫(kù)發(fā)展而
2、來(lái)的三維真實(shí)感圖形生成工具, 鑒于它的跨平臺(tái)、高質(zhì)量、高效率、功能等特點(diǎn),已經(jīng)成為各種平臺(tái)下的三維圖形制作及交互式場(chǎng)景處理的工業(yè)標(biāo)準(zhǔn),被廣泛地運(yùn)用于科學(xué)計(jì)算可視化、計(jì)算機(jī)動(dòng)畫(huà)和虛擬現(xiàn)實(shí)等計(jì)算機(jī)圖形學(xué)熱點(diǎn)問(wèn)的解決之中。在 Windows 平臺(tái)下,OpenGL 和 DirectX 是兩個(gè)開(kāi)發(fā)三維圖形應(yīng)用程序的標(biāo)準(zhǔn),OpenGL 提供了二維和三維建模、 變換、 光線(xiàn)處理、 色彩處理、 紋理映射、 運(yùn)動(dòng)模糊、 動(dòng)畫(huà)和實(shí)時(shí)交互等功能,是繪制真實(shí)感三維圖形、建立三維交互場(chǎng)景、實(shí)現(xiàn)虛擬現(xiàn)實(shí)的高性能圖形開(kāi)發(fā)工具軟件包。與 DirectX 相比,用 OpenGL 來(lái)繪制三維地形具有圖形質(zhì)量高、程序可移植性好等優(yōu)
3、點(diǎn)。本文充分利用三維圖形庫(kù) OpenGL 卓越的渲染能力,在 Visual C+ 6.0環(huán)境下開(kāi)發(fā)了一種基于 OpenGL 的三維真實(shí)感圖形顯示和渲染的工具二、 實(shí)驗(yàn)題目三維真實(shí)感圖形設(shè)計(jì)與繪制1. 題目?jī)?nèi)容說(shuō)明:(1)題目?jī)?nèi)容說(shuō)明:本題目要求應(yīng)用OpenGL的光照技術(shù)和紋理技術(shù)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的三維真實(shí)感圖形的程序設(shè)計(jì)。程序功能要求: 1)用對(duì)話(huà)方式實(shí)現(xiàn)交互式的光照、材質(zhì)模型參數(shù)設(shè)計(jì)。 2)交互式的模型紋理映射功能 3)用鼠標(biāo)跟蹤球方法實(shí)現(xiàn)三維模型的空間旋轉(zhuǎn)2. 技術(shù)要點(diǎn)說(shuō)明 1)三維模型顯示場(chǎng)景樹(shù) 所謂三維場(chǎng)景樹(shù)是指將三維可視化模型場(chǎng)景內(nèi)容分解用一種樹(shù)或表數(shù)據(jù)結(jié)構(gòu)描述。 2) 建立一個(gè)合理程序
4、設(shè)計(jì)類(lèi)結(jié)構(gòu)三、 需求分析真實(shí)感圖形的設(shè)計(jì)與繪制,是計(jì)算機(jī)圖形學(xué)中的一個(gè)重要研究領(lǐng)域,也是三維實(shí)體造型系統(tǒng)和特征造型系統(tǒng)的重要組成部分。一般地,三維實(shí)體在計(jì)算機(jī)顯示屏上有三種表現(xiàn)形式:簡(jiǎn)單線(xiàn)框圖、線(xiàn)框消隱圖和真實(shí)感圖形。其中,簡(jiǎn)單線(xiàn)框圖能夠粗略表達(dá)實(shí)體的形狀,但由于簡(jiǎn)單線(xiàn)框圖的二義性,從而導(dǎo)致表達(dá)其的實(shí)體形狀具有不確定性。而線(xiàn)框消隱圖雖然能反映實(shí)體各表面間的相互遮擋關(guān)系,從而達(dá)到消除簡(jiǎn)單線(xiàn)框圖產(chǎn)生的二義性的目的,但是這兩者一樣地只能反映實(shí)體的幾何形狀和實(shí)體間的相互關(guān)系,而不能反映實(shí)體表面的特征,如表面的顏色、材質(zhì)、紋理等。所以,只有真實(shí)感圖形才能表現(xiàn)實(shí)體的這些特征,因此,在三維實(shí)體造型中,生成三
5、維實(shí)體的光照模型,進(jìn)行實(shí)體的真實(shí)感繪制與顯示占有重要的地位,是很有必要的,也是我做此設(shè)計(jì)的初衷。 在設(shè)計(jì)中,我主要使用Opengl繪制真實(shí)感圖形,它作為一種強(qiáng)大的三維圖形開(kāi)發(fā)工具,通過(guò)便捷的編程接口提供了處理光照和物體材質(zhì)、顏色屬性等通用功能。真實(shí)感圖形學(xué)是計(jì)算機(jī)圖形的核心內(nèi)容之一,是最能直接反映圖形學(xué)魅力的分支。尋求能準(zhǔn)確地描述客觀世界中各種現(xiàn)象與景觀的數(shù)學(xué)模型,并逼真地再現(xiàn)這些現(xiàn)象與景觀,是圖形學(xué)的一個(gè)重要研究課題。很多自然景物難以用幾何模型描述,如煙霧、植物、水波、火焰等。本文所討論的幾種建模及繪制技術(shù)都超越了幾何模型的限制,能夠用簡(jiǎn)單的模型描述復(fù)雜的自然景物。在計(jì)算機(jī)的圖形設(shè)備上實(shí)現(xiàn)真
6、實(shí)感圖形必須完成的四個(gè)基本任務(wù)。1. 三維場(chǎng)景的描述。三維造型。2. 將三維幾何描述轉(zhuǎn)換成為二維透視圖。透視變換。3. 確定場(chǎng)景中的所有可見(jiàn)面。消隱算法,可見(jiàn)面探測(cè)算法。4. 計(jì)算場(chǎng)景中可見(jiàn)面的顏色。根據(jù)基于光學(xué)物理的光照模型計(jì)算可見(jiàn)面投射到觀察者眼中的光亮度大小和色彩組成。1. 課題設(shè)計(jì)思路要設(shè)計(jì)一個(gè)良好的場(chǎng)景和優(yōu)秀的交互方式,現(xiàn)在虛擬現(xiàn)實(shí)場(chǎng)景十分繁多,各種交互方式也五花八門(mén),我們要選擇特定的場(chǎng)景,場(chǎng)景要保證兩點(diǎn):一是其新鮮性,讓人耳目一新,否則會(huì)讓人有過(guò)于老套的感覺(jué);另外就是其真實(shí)度,這是本次課題的著重關(guān)注點(diǎn);在選取選定的場(chǎng)景后,我們要定義各交互方式,在從現(xiàn)有可得到的交互方式案例中提取和創(chuàng)
7、新,以保證開(kāi)發(fā)出來(lái)的交互方式可以最大程度的提高人機(jī)交互的效率。 場(chǎng)景的規(guī)模是必須考慮的,因?yàn)樵O(shè)計(jì)的時(shí)間和人員有限,必須限制場(chǎng)景規(guī)模,沒(méi)有時(shí)間和人力去開(kāi)發(fā)過(guò)大的場(chǎng)景規(guī)模,但是如果場(chǎng)景規(guī)模過(guò)小,演示系統(tǒng)就無(wú)法給人帶來(lái)非常強(qiáng)烈的真實(shí)感沖擊,而且過(guò)小規(guī)模的場(chǎng)景也會(huì)限制交互方式的設(shè)計(jì)和開(kāi)發(fā)。 三維圖形及動(dòng)畫(huà)場(chǎng)景的顯示,就是把所建立的三維空間模型,經(jīng)過(guò)計(jì)算機(jī)的復(fù)雜處理,最終在計(jì)算機(jī)二維屏幕上顯示的過(guò)程,并且在顯示的過(guò)程要保證其真實(shí)感。一般,設(shè)計(jì)三維圖形軟件要經(jīng)過(guò)以下步驟:(1)圖元建立三維模型。(2)設(shè)置觀看物體的窗口和觀看點(diǎn)(視點(diǎn))。(3)設(shè)定各物體的屬性(如色彩、光照、紋理映射等)(4)如果要物體動(dòng)起
8、來(lái),還要進(jìn)行圖形變換(如幾何變換、視窗變換和投影變換等)。(5)三維圖形的二維化。四、 三維圖形的設(shè)計(jì)過(guò)程1. 三維圖形設(shè)計(jì)的過(guò)程如下:(1) 建立三維模型建立三維模型,就是在三維坐標(biāo)系中畫(huà)三維場(chǎng)景。利用畫(huà)點(diǎn)(Point)、畫(huà)線(xiàn)(Line)、畫(huà)多邊形(Polygon)等函數(shù)可以建立復(fù)雜的空間模型。在表示三維空間時(shí),一般用齊次坐標(biāo)(Homogeneous Coordinate)。在實(shí)際應(yīng)用時(shí)一般把一系列頂點(diǎn)(Vertex )組織起來(lái)以構(gòu)成物體或圖元。(2) 置窗口和視口 圖形顯示的區(qū)域稱(chēng)為顯示窗口。流程順序?yàn)椋憾x一個(gè)窗口一般由以下步驟完成:設(shè)置窗口模式,設(shè)置窗口位置、大小,初始化窗口,窗口顏色
9、設(shè)置清理窗口是指把窗口清成某種顏色。要觀看場(chǎng)景,也需要一個(gè)窗口,即視口。通俗地講,視口變大,場(chǎng)景被放大;視口變小,場(chǎng)景被縮小。下面就是一個(gè)簡(jiǎn)單視窗的代碼:void myDisplay(void)glClear(GL_COLOR_BUFFER_BIT);glRectf(-0.5f, -0.5f, 0.5f, 0.5f);glFlush();int main(int argc, char *argv)glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(100, 10
10、0);glutInitWindowSize(400, 400);glutCreateWindow("第一個(gè) OpenGL 程序");glutDisplayFunc(&myDisplay);glutMainLoop();return 0;該程序的作用是在一個(gè)黑色的窗口中央畫(huà)一個(gè)白色的矩形(3) 設(shè)置光照 要使物體具有真實(shí)感,就要對(duì)物體進(jìn)行光照處理。在計(jì)算機(jī)圖形學(xué)中,物體的真實(shí)感應(yīng)考慮兩種因素:光源和物體材質(zhì)。OpenGL 在處理光照時(shí)采用這樣一種近似:把光照系統(tǒng)分為三部分,分別是光源、材質(zhì)和光照環(huán)境。光源就是光的來(lái)源,可以是前面所說(shuō)的太陽(yáng)或者電燈等。材質(zhì)是指接受光照的
11、各種物體的表面,由于物體如何反射光線(xiàn)只由物體表面決定(OpenGL 中沒(méi)有考慮光的折射),材質(zhì)特點(diǎn)就決定了物體反射光線(xiàn)的特點(diǎn)。光照環(huán)境是指一些額外的參數(shù),它們將影響最終的光照畫(huà)面,比如一些光線(xiàn)經(jīng)過(guò)多次反射后,已經(jīng)無(wú)法分清它究竟是由哪個(gè)光源發(fā)出,這時(shí),指定一個(gè)“環(huán)境亮度”參數(shù),可以使最后形成的畫(huà)面更接近于真實(shí)情況。(4)控制材質(zhì)材質(zhì)與光源相似,也需要設(shè)置眾多的屬性。不同的是,光源是通過(guò) glLight*函數(shù)來(lái)設(shè)置的,而材質(zhì)則是通過(guò) glMaterial*函數(shù)來(lái)設(shè)置的。glMaterial*函數(shù)有三個(gè)參數(shù)。第一個(gè)參數(shù)表示指定哪一面的屬性??梢允?GL_FRONT、GL_BACK 或者 GL_FRO
12、NT_AND_BACK。分別表示設(shè)置“正面”“ 背面”的材質(zhì),或者兩面同時(shí)設(shè)置。(關(guān)于“正面”“ 背面”的內(nèi)容需要參看前些課程的內(nèi)容)第二、第三個(gè)參數(shù)與glLight*函數(shù)的第二、三個(gè)參數(shù)作用類(lèi)似。2. 設(shè)計(jì)過(guò)程說(shuō)明:首先,為了繪制三維分形圖形,我們先要建立數(shù)學(xué)模型。物體的三維模型的建立,需要向計(jì)算機(jī)輸入三維數(shù)據(jù),而在實(shí)際應(yīng)用中,三維數(shù)據(jù)的輸入是一個(gè)復(fù)雜的問(wèn)題,需要用曲線(xiàn)、曲面擬合的方法建立模型。因此要根據(jù)不同的三維分形圖形的具體情況,尋找合適的方法來(lái)建立它們各自的數(shù)學(xué)模型。其次,要在計(jì)算機(jī)上進(jìn)行三維分形的算法實(shí)現(xiàn)。在顯示設(shè)備上逼真地顯示出建立的模型,需要對(duì)原始圖形數(shù)據(jù)進(jìn)行坐標(biāo)變換、隱藏面消除
13、和明暗處理,最后生成所要顯示的真實(shí)感圖形。針對(duì)不同的三維分形圖形,如何采取合適的方法在計(jì)算機(jī)上實(shí)現(xiàn),需要通過(guò)對(duì)問(wèn)題的具體分析后進(jìn)行選取。五、 三維圖形的主程序1. 部分源碼main函數(shù)源碼:#include "stdafx.h"#include <stdlib.h> #include <glglut.h> #include <glglaux.h> GLfloat xrot; / 繞X軸旋轉(zhuǎn)的角度。GLfloat yrot; / 繞Y軸旋轉(zhuǎn)的角度。GLuint texture6; / 存儲(chǔ)6個(gè)面。int LastXPos,LastYPos;
14、 /上次鼠標(biāo)點(diǎn)擊處x、y坐標(biāo)。BOOL IsLBDown = FALSE; /鼠標(biāo)左鍵是否按下。讀取紋理文件/加載失敗是返回nullAUX_RGBImageRec *LoadBMP(char *Filename) / 加載圖片。FILE *File=NULL; if (!Filename) / 確保的到了文件名。return NULL; / 如果沒(méi)得到就返回空。File=fopen(Filename,"r"); / 檢查文件是否存在。if (File) / 文件是否存在?fclose(File); / 關(guān)閉文件。return auxDIBImageLoad(Filename
15、); / 加載圖片并返回指針。return NULL; / 加載失敗返回空。加載紋理設(shè)置紋理模式并綁定紋理int LoadGLTextures() / 加載圖片并貼在表面上。int i; char filename128; /此處一次加載6個(gè)紋理AUX_RGBImageRec *TextureImage6; / 創(chuàng)建紋理的存儲(chǔ)空間。memset(TextureImage,0,sizeof(void *)*6); / 設(shè)置指針為空。/ 加載圖片,檢查錯(cuò)誤,如果圖片不存在就退出。for(i=0;i<6;i+)sprintf(filename,"Data/%d.bmp",i
16、+1);TextureImagei = LoadBMP(filename);if(!TextureImagei)char msg256;sprintf(msg,"Cannot read the file : %s",filename);MessageBox(NULL,msg,"Error",MB_OK);return FALSE; glGenTextures(6,texture); for(i=0;i<6;i+)glBindTexture(GL_TEXTURE_2D,texturei);glTexParameteri(GL_TEXTURE_2D,G
17、L_TEXTURE_MAG_FILTER,GL_NEAREST);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImagei->sizeX, TextureImagei->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImagei->data);if(TextureImagei->data)free(TextureImagei->data);free(Textur
18、eImagei);return TRUE; /返回狀態(tài)。響應(yīng)窗口發(fā)生變化事件GLvoid ReSizeGLScene(GLsizei width, GLsizei height) / 調(diào)整大小和初始化GL窗口。if (height=0) / 防止為0.height=1; / 為0是改為1.glViewport(0,0,width,height); / 設(shè)置當(dāng)前視口。glMatrixMode(GL_PROJECTION); / 選擇投影矩陣。glLoadIdentity(); / 復(fù)位投影矩陣。/ 計(jì)算窗口的縱橫比gluPerspective(45.0f,(GLfloat)width/(GLfl
19、oat)height,0.1f,100.0f);glMatrixMode(GL_MODELVIEW); / 選擇的模型視圖矩陣。glLoadIdentity(); /重置模型觀察矩陣。/場(chǎng)景初始化int InitGL(GLvoid) / 所有的設(shè)置。/加載紋理if (!LoadGLTextures() / 紋理加載程序。return FALSE; / 如果紋理不加載返回false。/啟用紋理貼圖glEnable(GL_TEXTURE_2D); / 使用紋理映射。glShadeModel(GL_SMOOTH); / 使光滑陰影。glClearColor(0.0f, 0.0f, 0.0f, 0.5
20、f); / 黑色背景。 /深度檢測(cè)glClearDepth(1.0f); / 深度緩沖區(qū)設(shè)置, glEnable(GL_DEPTH_TEST); / 允許深度測(cè)試。glDepthFunc(GL_LEQUAL); / 做深度測(cè)試的類(lèi)型。glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); / 真實(shí)感的角度計(jì)算。/啟用光源GLfloat mat_ambient = 0.2f, 0.2f, 0.2f, 1.0f ;GLfloat mat_diffuse = 0.8f, 0.8f, 0.8f, 1.0f ;GLfloat mat_specular = 1
21、.0f, 1.0f, 1.0f, 1.0f ;GLfloat mat_shininess = 50.0f ;GLfloat light0_diffuse = 1.0f, 0.0f, 0.0f, 1.0f ;GLfloat light0_position = 0.0f, 0.0f, 21.0f, 0.0f ;glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);/指定材質(zhì)的環(huán)境反射光的反射系數(shù)。glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);/制定材質(zhì)的漫反射光反射系數(shù)。glMaterialfv(GL_FR
22、ONT, GL_SPECULAR, mat_specular);/制定材質(zhì)的鏡面反射光反射系數(shù)。glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);/制定材質(zhì)的鏡面反射指數(shù)值。glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse);/指定漫反射光成分。glLightfv(GL_LIGHT0, GL_POSITION, light0_position);/設(shè)置光源位置。glEnable(GL_BLEND);glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
23、;glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glEnable(GL_DEPTH_TEST);glClearColor(1.0f, 1.0f, 1.0f, 1.0f);return TRUE; / 初始化成功。下面的代碼完成繪制網(wǎng)格線(xiàn)void drawPlane()glColor3f(1.0f, 1.0f, 1.0f);for (float u = -8.0; u <= 8.0; u += 0.5f)glBegin(GL_LINES);glVertex3f(-8, 0, u);glVertex3f(8, 0, u);glVertex3f(u, 0,
24、 -8);glVertex3f(u, 0, 8);glEnd();void MyDisPlay(void)glPushMatrix();glRotatef(30, 9.0, -6.0, 0.0);drawPlane(); /繪制網(wǎng)格。glPopMatrix();glTranslated(3.0f, -1.0f, 2.0f);glutSolidSphere(1.0f, 20, 20);/繪制球體。glPopMatrix();glTranslated(3.0f, 0.5f, 0.0f);glutSolidTeapot(1.0);/繪制茶壺。glPopMatrix();glTranslated(-2
25、.5f, 1.5f,-7.0f);glRotatef(60, -1.0, 0.0, 0.0);glutSolidCone(1.0f, 3.0f, 99, 1);/繪制圓錐。glPopMatrix();glDisable(GL_COLOR_MATERIAL);glPopMatrix();glFlush();繪制6面體,并響應(yīng)鼠標(biāo)的拖動(dòng)旋轉(zhuǎn)void DrawGLScene(GLvoid) / 這里做所有的繪畫(huà)。glClearColor(0.0, 0.0, 255.0, 0.0);glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); / 清除屏幕和深
26、度緩沖區(qū)。glLoadIdentity(); glTranslatef(-3.0f,1.0f,-8.0f); /將場(chǎng)景向里面平移5個(gè)單位glRotatef(xrot,1.0f,0.0f,0.0f); /沿x軸旋轉(zhuǎn)glRotatef(yrot,0.0f,1.0f,0.0f); /沿y軸旋轉(zhuǎn)/繪制6面體并分別進(jìn)行紋理綁定/前面。glBindTexture(GL_TEXTURE_2D, texture0); glBegin(GL_QUADS);glNormal3f( 0.0f, 0.0f, 1.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f
27、, 1.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);glEnd(); / 后面。glBindTexture(GL_TEXTURE_2D, texture1);glBegin(GL_QUADS);glNormal3f( 0.0f, 0.0f,-1.0f);glTexCoord2f(1.0f, 0.0
28、f); glVertex3f(-1.0f, -1.0f, -1.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);glEnd();/上面。glBindTexture(GL_TEXTURE_2D, texture2);glBegin(GL_QUADS);glNormal3f( 0.0f, 1.0f,
29、 0.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);glEnd();/ 下面,glBindTexture(GL_TEXTURE_2D, texture3);glBegin(GL_QUAD
30、S);glNormal3f( 0.0f,-1.0f, 0.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);glEnd();/ 右面。glBindTexture(GL_TEXTURE
31、_2D, texture4);glBegin(GL_QUADS);glNormal3f( 1.0f, 0.0f, 0.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);glEnd();/
32、 左面。glBindTexture(GL_TEXTURE_2D, texture5);glBegin(GL_QUADS);glNormal3f(-1.0f, 0.0f, 0.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f(-
33、1.0f, 1.0f, -1.0f);glEnd();MyDisPlay(); /xrot+=xspeed; /yrot+=yspeed; glutSwapBuffers();處理鼠標(biāo)按下事件void processMouse(int button, int state, int x, int y) /鼠標(biāo)左鍵按下 if (button = GLUT_LEFT_BUTTON && state=GLUT_DOWN)int xPos,yPos;xPos = x; yPos = y;LastXPos = xPos;LastYPos = yPos;IsLBDown = TRUE;/鼠標(biāo)左鍵彈起if(button = GLUT_LEFT_BUTTON && state=GLUT_UP)IsLB
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024副食品保障供應(yīng)合同
- 農(nóng)產(chǎn)品采購(gòu)合作協(xié)議書(shū)
- 社區(qū)物業(yè)管理服務(wù)合同
- 小額民間借款合同范本
- 建筑行業(yè)材料購(gòu)銷(xiāo)協(xié)議模板
- 2023年高考地理復(fù)習(xí)精題精練-區(qū)域發(fā)展對(duì)交通運(yùn)輸布局的影響(解析版)
- 2024年售房的合同范本
- 建筑工地物資租賃合同書(shū)
- 房產(chǎn)抵押擔(dān)保協(xié)議參考
- 2024年勞務(wù)協(xié)議書(shū)樣本
- 企業(yè)如何利用新媒體做好宣傳工作課件
- 如何培養(yǎng)孩子的自信心課件
- 中醫(yī)藥膳學(xué)全套課件
- 頸脊髓損傷-匯總課件
- 齒輪故障診斷完美課課件
- 2023年中國(guó)鹽業(yè)集團(tuán)有限公司校園招聘筆試題庫(kù)及答案解析
- 大班社會(huì)《特殊的車(chē)輛》課件
- 野生動(dòng)物保護(hù)知識(shí)講座課件
- 早教托育園招商加盟商業(yè)計(jì)劃書(shū)
- 光色變奏-色彩基礎(chǔ)知識(shí)與應(yīng)用課件-高中美術(shù)人美版(2019)選修繪畫(huà)
- 前列腺癌的放化療護(hù)理
評(píng)論
0/150
提交評(píng)論