《OpenGL圖形軟件包》PPT課件_第1頁(yè)
《OpenGL圖形軟件包》PPT課件_第2頁(yè)
《OpenGL圖形軟件包》PPT課件_第3頁(yè)
《OpenGL圖形軟件包》PPT課件_第4頁(yè)
《OpenGL圖形軟件包》PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 OpenGL簡(jiǎn)介 OpenGL坐標(biāo)系的設(shè)置一、OpenGL是什么開(kāi)放圖形庫(kù)OpenGL(Open Graphics Library)是圖形硬件的一個(gè)軟件接口,它實(shí)現(xiàn)了各種二維和三維的高級(jí)圖形處理技術(shù),是實(shí)現(xiàn)逼真的三維效果與建立交互式三維景觀(guān)的強(qiáng)大工具。OpenGL獨(dú)立于硬件系統(tǒng)和操作系統(tǒng),可以在各種類(lèi)型的計(jì)算機(jī)、各種操作系統(tǒng)上使用,還可以在網(wǎng)絡(luò)環(huán)境下以客戶(hù)-服務(wù)器模式工作,具有很高的可移植性。OpenGL中的圖形函數(shù)定義為獨(dú)立于任何程序設(shè)計(jì)語(yǔ)言的一組規(guī)范,在各種編程語(yǔ)言中,如C+、FORTRAN、JAVA等都可以調(diào)用OpenGL的庫(kù)函數(shù)。OpenGL是什么OpenGL是一套應(yīng)用程序編程接口(

2、Application Programming Interface,API),借助于OpenGL編程可實(shí)現(xiàn)對(duì)圖形硬件的訪(fǎng)問(wèn)。OpenGL有兩個(gè)重要的優(yōu)點(diǎn):1、 OpenGL非常接近底層硬件,使用OpenGL編寫(xiě)的程序具有較高的運(yùn)行效率;2、 OpenGL易于掌握和使用?!咀ⅰ緼PI:在計(jì)算機(jī)圖形學(xué)的諸多應(yīng)用領(lǐng)域,如交互游戲、交互網(wǎng)站、CAD軟件包設(shè)計(jì)中,應(yīng)用軟件各項(xiàng)功能的實(shí)現(xiàn)依賴(lài)硬件和底層軟件。為避免應(yīng)用程序所共有的標(biāo)準(zhǔn)功能代碼重復(fù)編寫(xiě),也為了程序員在編寫(xiě)代碼時(shí)不必關(guān)心圖形硬件的細(xì)節(jié),同時(shí)提高應(yīng)用程序的可移植性,API應(yīng)運(yùn)而生。API通過(guò)一套精心定義的接口函數(shù),實(shí)現(xiàn)圖形軟件與系統(tǒng)的交互。Ope

3、nGL API:OpenGL為多種圖形硬件所支持,它包含200多個(gè)可用于構(gòu)建應(yīng)用程序的函數(shù)。幾乎所有的計(jì)算機(jī)和操作系統(tǒng)中都有OpenGL的相應(yīng)實(shí)現(xiàn),使用OpenGL編寫(xiě)的程序可被移植到任何支持該接口的計(jì)算機(jī)。一個(gè)典型的OpenGL應(yīng)用程序可運(yùn)行在具有任意實(shí)現(xiàn)方式的平臺(tái)中。此外,OpenGL具有高度的穩(wěn)定性??偨Y(jié)OpenGL的優(yōu)勢(shì)主要體現(xiàn)在下面三方面:1. 與C語(yǔ)言緊密結(jié)合OpenGL命令最初就是用C語(yǔ)言函數(shù)來(lái)描述的,對(duì)于學(xué)過(guò)C語(yǔ)言的人而言,OpenGL容易理解和掌握的。2. 強(qiáng)大的可移植性與DirectX相比較,OpenGL有更強(qiáng)的可移植性。 DirectX基于Windows系統(tǒng),游戲開(kāi)發(fā)還必

4、須基于XBOX游戲機(jī)。OpenGL不依賴(lài)操作系統(tǒng),真正做到與硬件無(wú)關(guān),與平臺(tái)無(wú)關(guān)。3. 高性能的圖形渲染OpenGL是一個(gè)工業(yè)標(biāo)準(zhǔn),各顯卡廠(chǎng)家無(wú)一不對(duì)OpenGL提供強(qiáng)力支持,使得OpenGL得以廣泛用于各行業(yè)圖形軟件的開(kāi)發(fā)。OpenGL的主要功能1、模型繪制:OpenGL能夠繪制點(diǎn)、線(xiàn)和多邊形,并利用這些基本圖元,幾乎可以構(gòu)造出所有的三維模型。 OpenGL還提供球、多面體、茶壺等復(fù)雜形體,以及Bezier、NURBS曲線(xiàn)曲面的繪制函數(shù)。2、模型觀(guān)察: OpenGL提供完備的幾何變換函數(shù),使用戶(hù)可以選擇三維模型的觀(guān)察方式。3、顏色模式: OpenGL提供兩種顏色模式RGBA模式和顏色索引模式

5、;三維模型著色有平面著色模式和光滑著色模式。OpenGL的主要功能4、光照應(yīng)用: OpenGL依據(jù)光線(xiàn)追蹤理論,提供多種光源模擬函數(shù),以及模型表面反射特征,即模擬材質(zhì)屬性的函數(shù),能夠?qū)崿F(xiàn)三維場(chǎng)景的光照模擬。5、圖形效果增強(qiáng): OpenGL提供了一系列增強(qiáng)三維景觀(guān)圖形效果的函數(shù),包括反走樣、混合和霧化。6、位圖和圖像處理: OpenGL提供了一系列針對(duì)位圖和圖像進(jìn)行操作的函數(shù)。位圖和圖像的數(shù)據(jù)均采用像素矩陣來(lái)表示。OpenGL的主要功能7、紋理映射: OpenGL提供了一系列紋理映射函數(shù),可以方便的把真實(shí)圖像貼到景物的多邊形上,從而繪制逼真的三維景觀(guān)。8、實(shí)時(shí)動(dòng)畫(huà): OpenGL采用雙緩存技術(shù)實(shí)

6、現(xiàn)動(dòng)畫(huà)效果。9、交互技術(shù): OpenGL提供了方便的三維圖形人機(jī)交互接口,用戶(hù)通過(guò)輸入設(shè)備可選擇和修改三維景觀(guān)中物體的方位、觀(guān)察角度等。三、構(gòu)建OpenGL運(yùn)行環(huán)境將 OpenGL文件dll文件夾內(nèi)的所有dll文件復(fù)制至系統(tǒng)的system32文件夾。如C盤(pán)為系統(tǒng)盤(pán)的Windows XP系統(tǒng),system32文件夾路徑為“C:WINDOWSsystem32”。將 OpenGL文件lib文件夾內(nèi)的所有文件拷貝到VCLib文件夾內(nèi),如E:SOFTWAREMicrosoft Visual StudioVC98Lib將 OpenGL文件include文件夾內(nèi)的gl拷貝到VCinclude文件夾內(nèi),例如E

7、:SOFTWAREMicrosoft Visual StudioVC98Include四. Visual C+中新建工程的步驟和為運(yùn)行OpenGL需作的設(shè)置1、新建工程的步驟 1)菜單“文件” “新建” 彈出新建對(duì)話(huà)框 2)選擇“Win32 Console Application”,選擇存放工程的目錄,為工程文件起一個(gè)名字。(如下圖)3)點(diǎn)擊“完成”按鈕。4)點(diǎn)菜單“文件” “新建” 彈出新建對(duì)話(huà)框,按下圖設(shè)置后,點(diǎn)確定。2、為運(yùn)行OpenGL程序,VC+ 6.0需要進(jìn)行的設(shè)置: 1)取得OpenGL編譯運(yùn)行所需文件。 2)菜單“工程” “設(shè)置” “C/C+”選項(xiàng)卡 “分類(lèi)”下拉框選“prep

8、rocessor”即 “預(yù)處理器”中填入OpenGL頭文件目錄的路徑。如下圖。3)“Link”選項(xiàng)卡 “分類(lèi)”下拉框選“Input” “對(duì)象庫(kù)模塊”中增加“opengl.lib”、 “ glu.lib”、 “ glut.lib” “附加庫(kù)路徑”中填入OpenGL lib文件的目錄路徑。如下圖。然后點(diǎn)“確定”按鈕。#pragma comment(lib, opengl32.lib); #pragma comment(lib, glu.lib); #pragma comment(lib, glut.lib);或者在源文件頭文件包含之后加上以下三段語(yǔ)句:五. OpenGL的基本語(yǔ)法 1、相關(guān)庫(kù)Ope

9、nGL核心庫(kù),包含115個(gè)最基本的函數(shù),這些函數(shù)以gl為前綴,如:glColor3f (1.0, 1.0, 1.0); /用于設(shè)定繪圖的顏色 核心庫(kù)函數(shù)用于常規(guī)的、核心的圖形處理,如建立各種幾何模型,產(chǎn)生光照效果,進(jìn)行反走樣及投影變換。五. OpenGL的基本語(yǔ)法 1、相關(guān)庫(kù)OpenGL實(shí)用程序庫(kù),包含43個(gè)函數(shù),這些函數(shù)以glu為前綴,如:gluOrtho2D(0.0, 200.0, 0.0, 150.0);/設(shè)置投影參數(shù) 實(shí)用程序庫(kù)的函數(shù)用于實(shí)現(xiàn)較復(fù)雜的操作,如紋理映射、坐標(biāo)變換、網(wǎng)格化、曲線(xiàn)曲面以及二次函數(shù)物體(圓柱、球)的繪制。五. OpenGL的基本語(yǔ)法 1、相關(guān)庫(kù)OpenGL實(shí)用程

10、序工具包,包含30多個(gè)函數(shù),以glut為前綴,如:glutInitWindowPosition(100, 120);/設(shè)置窗口的位置 實(shí)用程序工具包主要提供基于窗口的工具,如窗口系統(tǒng)的初始化、多窗口管理、菜單管理等。GLUT庫(kù)中的窗口管理函數(shù)不依賴(lài)運(yùn)行環(huán)境,因此GLUT可以在所有的OpenGL平臺(tái)上運(yùn)行。五. OpenGL的基本語(yǔ)法 2、命名規(guī)則OpenGL函數(shù)都遵循一個(gè)命名約定,通過(guò)這個(gè)約定可以了解函數(shù)源于哪個(gè)庫(kù),需要參數(shù)的個(gè)數(shù)以及參數(shù)的類(lèi)型。命名規(guī)則:如:glColor3f (1.0, 1.0, 1.0);gl 表示該函數(shù)來(lái)自核心庫(kù)gl.h;Color 函數(shù)的根命令,表示該函數(shù)用于顏色設(shè)定

11、;3f 表示該函數(shù)有3個(gè)浮點(diǎn)類(lèi)型的參數(shù);五. OpenGL的基本語(yǔ)法 2、命名規(guī)則有些函數(shù)使用一個(gè)或多個(gè)符號(hào)常量,各常量之間以符號(hào)“|”分隔。OpenGL符號(hào)常量均以庫(kù)前綴的大寫(xiě)形式開(kāi)頭,各個(gè)組成詞間用下劃線(xiàn)分開(kāi)。如:glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);GLUT_SINGLE:?jiǎn)尉彌_區(qū)GLUT_RGB:顏色模式為RGBOpenGL數(shù)據(jù)類(lèi)型含義定義為C類(lèi)型C字面值后綴GLbyte8位整數(shù)signed charBGLshort16位整數(shù)shortSGLint,GLsizei32位整數(shù)longLGLfloat,GLclampf32位浮點(diǎn)數(shù)floatFG

12、Ldouble,GLclampd64位浮點(diǎn)數(shù)doubleDGLubyte,GLboolean8位無(wú)符號(hào)整數(shù)unsigned charUbGLshort16位無(wú)符號(hào)整數(shù)unsigned shortUsGLuint,GLenum,GLbitfield32位無(wú)符號(hào)整數(shù)unsigned longUi五. OpenGL的基本語(yǔ)法 3、數(shù)據(jù)類(lèi)型OpenGL定義有自己的數(shù)據(jù)類(lèi)型,這些數(shù)據(jù)類(lèi)型可以映射為常規(guī)的C語(yǔ)言的數(shù)據(jù)類(lèi)型六. OpenGL基本程序剖析 (初始化firstgl.cpp) 程序的結(jié)構(gòu):頭文件包含圖形窗口初始化init()繪圖顯示函數(shù)display()顯示窗口設(shè)置函數(shù)reshape()主函數(shù)ma

13、in()利用OpenGL繪圖,需要引入OpenGL核心庫(kù)以及其他需要使用的庫(kù)的頭文件。由于OpenGL沒(méi)有包含窗口系統(tǒng),因此還需要引入窗口系統(tǒng),在windows操作系統(tǒng)下,應(yīng)包含windows.h文件。#include windows.h#include /本例使用glut庫(kù)函數(shù)實(shí)現(xiàn)窗口管理六. OpenGL基本程序剖析 first.cpp頭文件包含如果使用gl或glu庫(kù)函數(shù)實(shí)現(xiàn)窗口管理,則包含語(yǔ)句應(yīng)寫(xiě)為:#include#include六. OpenGL基本程序剖析 first.cpp頭文件包含初始化函數(shù)init() 剖析:void init(void) glClearColor(0.0,0

14、.0,0.0,0.0); /設(shè)置清除顏色 glShadeModel(GL_FLAT); /設(shè)置著色模型,可選擇的參數(shù)為 :GL_FLAT:?jiǎn)紊獹L_SMOOTH:平滑著色 六. OpenGL基本程序剖析 first.cpp圖形窗口初始化init()void display(void) glClear(GL_COLOR_BUFFER_BIT); /清除顏色緩沖區(qū),其效果為將整個(gè)窗口清除為當(dāng)前清除顏色glBegin(GL_LINE_STRIP); /設(shè)置繪制連續(xù)直線(xiàn) glColor3f(1.0,0.0,0.0); /設(shè)置繪制顏色,即前景色,顏色參數(shù)是比例值,值域0, 1 glVertex3f(

15、0.25,0.25,0.0); /點(diǎn)坐標(biāo) glVertex3f(0.75,0.75,0.0); glVertex3f(0.75,0.25,0.0); glVertex3f(0.25,0.25,0.0); glEnd(); glFlush(); /強(qiáng)制之前所發(fā)出的OpenGL命令開(kāi)始執(zhí)行,并保證它們能夠在有限的時(shí)間內(nèi)完成。六. OpenGL基本程序剖析 first.cpp繪圖顯示函數(shù)display()【注】OpenGL常用的混合色混合色紅色成分(R)綠色成分(G)藍(lán)色成分(B)黑0.00.00.0紅1.00.00.0綠0.01.00.0黃1.01.00.0藍(lán)0.00.01.0紫1.00.01.0

16、青0.01.01.0深灰0.250.250.25淺灰0.750.750.75棕0.600.400.12南瓜橙0.980.6250.12粉紅0.980.040.70紫紅0.600.400.70白1.01.01.0void reshape(int w,int h)glMatrixMode (GL_PROJECTION); /指定投影矩陣為當(dāng)前矩陣glLoadIdentity(); /該函數(shù)重置當(dāng)前指定的矩陣為單位矩陣 gluOrtho2D (0.0, 1.0, 0.0, 1.0); /該函數(shù)把原點(diǎn)(0,0)放在最左下角的位置,并設(shè)置單位長(zhǎng)度。六. OpenGL基本程序剖析 first.cpp顯示窗

17、口設(shè)置函數(shù)reshape()/*窗口管理*/ glutInit(&argc,argv); /初始化GLUT并處理命令行參數(shù),應(yīng)在調(diào)用其它函數(shù)前調(diào)用 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /指定使用單緩存RGBA顏色模式 glutInitWindowSize(640,480); /指定窗口的大小,單位為像素 glutInitWindowPosition(100,100); /指定窗口左上角在屏幕上的位置 glutCreateWindow(“OpenGL初始化”); /該函數(shù)返回一個(gè)標(biāo)識(shí)符,唯一的標(biāo)識(shí)新建的窗口 init(); /調(diào)用圖形窗口初始化函

18、數(shù)六. OpenGL基本程序剖析 first.cpp主函數(shù)void main(int argc, char* argv)/*回調(diào)函數(shù)*/ glutReshapeFunc(reshape); /注冊(cè)重畫(huà)回調(diào)函數(shù) glutDisplayFunc(display); /注冊(cè)顯示回調(diào)函數(shù) glutMainLoop(); /進(jìn)入GLUT事件處理循環(huán),讓所有與“事件”有關(guān)的函數(shù)調(diào)用都無(wú)限循環(huán)。 六. OpenGL基本程序剖析 first.cpp主函數(shù)void main(int argc, char* argv)七、關(guān)于坐標(biāo)系統(tǒng)定義函數(shù)的說(shuō)明:OpenGL在繪制最終圖形時(shí)所使用的坐標(biāo)系統(tǒng),決定了圖像將如何映

19、射到屏幕上。glOrtho() 該函數(shù)創(chuàng)建了一個(gè)正交平行的三維視景體,與之相適應(yīng)的映射函數(shù)中的點(diǎn)坐標(biāo)應(yīng)該是三維的。glOrtho()函數(shù)用途:設(shè)置或修改修剪空間的范圍句法:void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);說(shuō)明:這個(gè)函數(shù)描述了一個(gè)平行修剪空間。這種投影意味著離觀(guān)察者較遠(yuǎn)的對(duì)象看上去不會(huì)變?。ㄅc透視投影相反)。在3D笛卡爾坐標(biāo)中想象這個(gè)修剪空間,左邊和右邊是最小和最大的X值,上邊和下邊是最小和最大的Y值,近處和遠(yuǎn)處是最小和最大的Z值。七、關(guān)于坐標(biāo)系統(tǒng)定義函數(shù)的說(shuō)明:以glOrtho()函數(shù)定義坐標(biāo)系統(tǒng)的代碼 glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); /視景體坐標(biāo)系大小按比例確定 glBegin(GL_POLOYGON); glVertex3f(0.25, 0.25,

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論