資源描述:
《計算機圖形學課程論文--基于OPENGL的紋理貼圖以其漫游的實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在學術論文-天天文庫。
1、課程論文課程名稱:計算機圖形學專業(yè)班級:計科班學生姓名:學號:指導教師:課程設計時間:2011年6月10日1課程題目:基于OPENGL的紋理貼圖以其漫游的實現(xiàn)2算法設計:2.1幾何圖元與場景表達如上的形式,繪制圖形在glbegin和glend這兩個函數(shù)之間,而繪制的幾何圖元的方式也是多種多樣的。上面的分別是畫多邊形和畫點,這是最基本的繪圖的方式,當然了,OPENGL有一個輔助的函數(shù)庫GLUT。它里面有一些基本的圖形的繪制函數(shù)2.2OpenGL中的變換這是一個非常重要的內(nèi)容,一定要理解和掌握它,這樣在以后就不會出現(xiàn)莫名奇妙的錯誤了,我在學這個編程的時候,就是會經(jīng)常出現(xiàn)不能顯
2、示我們所繪制圖形的問題,這個過程花費了我好多的時間來解決。這是將現(xiàn)實世界的東西轉(zhuǎn)換到計算機所能表達非常重要的一步。它包括模型與視點的變換(移,旋轉(zhuǎn),及比例變換)、投影變換(平行投影,透視投影)2.3OpenGL中的照明OpenGL中使用簡單光照模型實現(xiàn)頂點顏色的計算,然后通過著色模式的設置,決定內(nèi)部象素顏色確定方式。OpenGL中有兩種顏色著色模式:單一著色(flat)和漸變著色(smooth)。通過函數(shù)glShadeModel(GLenummode);進行設置。其中:mode參數(shù)為GL_FLAT或GL_SMOOTH,分別表示使用單一著色模式和漸變顏色模式。在使用漸變顏色
3、模式時,OpenGL使用Gouraud模型對顏色進行插值:線段內(nèi)部使用頂點顏色的線性插值,多邊形內(nèi)部使用頂點顏色的雙線性插值。1)啟動和關閉光照glEnable(GL_LIGHTING);//之后使用光照模型計算頂點顏色。glDisable(GL_LIGHTING);//之后頂點顏色為當前顏色,當前顏色可以通過glColor*函數(shù)指定。(2)啟動和關閉特定光源glEnable(GL_LIGHTi);glDisable(GL_LIGHTi);其中:GL_LIGHTi為GL_LIGHT0、GL_LIGHT1、...、GL_LIGHT7、…,光源的最大數(shù)目為GL_MAX_LIG
4、HTS,但至少有8個可用光源2.4OPENGL中使用紋理這個內(nèi)容是我研究的重點,在OPENGL的學習過程中這方面的內(nèi)容一直伴隨著,這也是最基本的實現(xiàn)三維可視化的過程。物體的表面細節(jié)稱為紋理(Texture)。OpenGL使用圖像表示紋理,這也是最常用的表示紋理的方式。二維紋理用得最多,一維和三維紋理也各有其用途。那么生成紋理的操作步驟是什么呢?下面我將要介紹它(1)圖像準備:既可以在程序中生成圖像,也可以讀取圖像文件。(2)生成紋理號:適用于多個紋理反復切換時,一個紋理時不需要。(3)設置當前紋理:切換紋理,又稱為紋理綁定。(4)定義紋理:指定當前紋理的圖像。(5)設置紋
5、理參數(shù):指定紋理的重疊方式和插值方式。(6)設置紋理環(huán)境參數(shù):決定怎樣使用紋理顏色,例如是否與光照色合成。(7)啟動紋理功能,繪制場景,給出頂點的紋理坐標和幾何坐標注:紋理坐標可以直接指定,也可以啟用自動計算紋理坐標功能。(8)退出前刪除紋理。用到的函數(shù):1)生成紋理號的函數(shù):VoidglGenTextures(GLsizein,GLuint*textures);同時生成多個紋理號。(2)設置當前紋理:voidglBindTexture(GLenumtarget,GLuinttexture);target:GL_TEXTURE_1D、GL_TEXTURE_2Dtextur
6、e:紋理號(3)刪除紋理voidglDeleteTextures(GLsizein,GLuint*textures);注:刪除的紋理必須存在4)定義紋理voidglTexImage2D(GLenumtarget,GLintlevel,GLintcomponents,GLsizeiwidth,glsizeiheight,GLintborder,GLenumformat,GLenumtype,constGLvoid*pixels);voidglTexImage1D(GLenumtarget,GLintlevel,GLintcomponents,GLsizeiwidth,GLi
7、ntborder,GLenumformat,GLenumtype,constGLvoid*pixels);說明:1)target:紋理維數(shù)。例如:GL_TEXTURE_1D、GL_TEXTURE_2D2)level:紋理層次,0層表示最底層紋理(使用原始圖像)3)components:1-4的整數(shù),說明象素有幾個分量4)width、height:象素寬度和高度,一定是二次冪+兩個邊界寬度5)border:邊界寬度,0或14)format:說明各個分量的意義,例如:GL_RGB5)type:每個分量的類型,例如:GL_UNSIG