版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第二章2024/3/812.6OpenGL圖形軟件包OpenGL的主要功能OpenGL的繪制流程OpenGL的基本語法OpenGL的程序?qū)嵗?024/3/82OpenGL圖形軟件包OpenGL是SGI(SiliconGraphicsInc.)公司對IRISGL進行改進,擴展可移植性,形成的一個跨平臺開放式圖形編程接口。目前,OpenGL標準由1992年成立的獨立財團OpenGLArchitectureReviewBoard(ARB)以投票方式產(chǎn)生,并制成規(guī)范文檔公布。2024/3/83OpenGL的主要功能模型繪制模型觀察顏色模式光照應(yīng)用圖像效果增強位圖和圖像處理紋理映射實時動畫交互技術(shù)2024/3/84OpenGL的繪制流程——工作方式一個完整的窗口系統(tǒng)的OpenGL圖形處理系統(tǒng)的結(jié)構(gòu)為:最底層為圖形硬件,第二層為操作系統(tǒng),第三層為窗口系統(tǒng),第四層為OpenGL,最上面的層為應(yīng)用軟件。圖2.34OpenGL圖形處理系統(tǒng)在計算機系統(tǒng)中的層次結(jié)構(gòu)2024/3/85OpenGL的繪制流程——流水線圖2.35一條簡化的OpenGL繪制流水線包括命令、頂點數(shù)據(jù)和紋理等數(shù)據(jù)的OpenGL命令將放在命令緩沖區(qū)中,對幾何頂點數(shù)據(jù)進行必要的變換、光照計算并進行投影后進入光柵化流程,根據(jù)幾何形狀、顏色及紋理數(shù)據(jù)生成圖像的幀緩存地址和像素點值,結(jié)果置入幀緩沖存儲器中。注意:只有當緩沖區(qū)被清空時,緩沖區(qū)中的命令和數(shù)據(jù)才會傳遞給流水線的下一個階段,OpenGL命令才會得到執(zhí)行。2024/3/86OpenGL的基本語法——相關(guān)庫OpenGL核心庫:gl
115個函數(shù)OpenGL實用程序庫:glu
43個函數(shù)OpenGL編程輔助庫:aux31個函數(shù)OpenGL實用程序工具包(OpenGLutilitytoolkit,GLUT):glut30多個函數(shù)Windows專用庫:wgl
6個函數(shù)2024/3/87OpenGL的基本語法——命名規(guī)則OpenGL函數(shù)都遵循一個命名約定,即采用以下格式:<庫前綴><根命令><可選的參數(shù)個數(shù)><可選的參數(shù)類型>
例如函數(shù)glColor3f(…),gl表示這個函數(shù)來自庫gl.h,根命令Color表示該函數(shù)用于顏色設(shè)定,3f表示這個函數(shù)采用了三個浮點數(shù)參數(shù)。符號常量的表示:GL開頭,下劃線(_)分開,大寫。例如:GL_RGB,GL_POLYGON等2024/3/88OpenGL的基本語法——數(shù)據(jù)類型OpenGL數(shù)據(jù)類型內(nèi)部表示法定義為C類型C字面值后綴GLbyte8位整數(shù)signedcharBGLshort16位整數(shù)shortSGLint,GLsizei32位整數(shù)longLGLfloat,GLclampf32位浮點數(shù)floatFGLdouble,GLclampd64位浮點數(shù)doubleDGLubyte,GLboolean8位無符號整數(shù)unsignedcharUbGLshort16位無符號整數(shù)unsignedshortUsGLuint,GLenum,GLbitfield32位無符號整數(shù)unsignedlongUi表2.2OpenGL的數(shù)據(jù)類型2024/3/89OpenGL程序?qū)嵗^文件包含利用OpenGL實現(xiàn)圖形繪制,首先要引入OpenGL核心庫以及其他需要使用的庫的頭文件。glut保證了gl.h和glu.h被正確包含。#include<gl/glut.h>#include<windows.h>2024/3/810OpenGL程序?qū)嵗翱诠芾沓跏蓟╣lutInit
)創(chuàng)建窗口(glutCreateWindow)設(shè)定窗口的顯示模式(glutInitDisplayMode)指定窗口的位置和大小(glutInitWindowPosition和glutInitWindowSize
)指定窗口的顯示內(nèi)容函數(shù)(glutDisplayFunc)運行框架(glutMainLoop)2024/3/811OpenGL程序?qū)嵗L制圖形指定窗口背景色(
glClearColor)顏色管理,使用RGB顏色模型。一種顏色用紅、綠、藍三種顏色成分混合而成,每種顏色成分使用0.0到1.0之間的任意有效浮點數(shù)來表示顏色值(見下頁)。2024/3/812OpenGL程序?qū)嵗L制圖形混合色紅色成分(R)綠色成分(G)藍色成分(B)黑0.00.00.0紅1.00.00.0綠0.01.00.0黃1.01.00.0藍0.00.01.0紫1.00.01.0青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.0表2.2OpenGL的一些常用混合色2024/3/813OpenGL程序?qū)嵗L制圖形刷新窗口的緩沖區(qū)
glClear(GL_COLOR_BUFFER_BIT);設(shè)定投影參數(shù)(將三維圖形投影到顯示窗口)
glMatrixMode(GL_PROJECTION);gluOrtho2D(0.0,200.0,0.0,150.0);繪制圖形
glRectf(50.0f,100.0f,150.0f,50.0f);2024/3/814第三章2024/3/8153.4OpenGL實現(xiàn)橡皮筋技術(shù)橡皮筋技術(shù)的實現(xiàn)方法利用顏色的異或操作,對原有圖形并不是擦除,而是再繪制一條同樣的直線段并與原圖形進行異或操作,此時原圖形會從屏幕上消失;利用雙緩存技術(shù),繪制圖形時分別繪制到兩個緩存,交替顯示。2024/3/816OpenGL實現(xiàn)橡皮筋技術(shù)鼠標實現(xiàn)鼠標響應(yīng)函數(shù)
glutMouseFunc鼠標移動相應(yīng)函數(shù)
glutMotionFunc
glutPassiveMotionFunc2024/3/817鍵盤實現(xiàn)鍵盤相應(yīng)函數(shù)
glutKeyboardFuncOpenGL實現(xiàn)橡皮筋技術(shù)2024/3/8183.5OpenGL實現(xiàn)拾取操作設(shè)置拾取緩沖區(qū)voidglSelectBuffer(GLsizei
n,GLunint*buff);進入選擇模式
GLint
glRenderMode(GLenummode);2024/3/81920OpenGL實現(xiàn)拾取操作名字堆棧操作初始化名字堆棧(glInitNames)將一個名字壓入堆棧(glPushName)替換名字堆棧的棧頂元素(glLoadName)將棧頂元素彈出(glPopName)2024/3/82021設(shè)置合適的變換過程
gluPickMatrix(xPick,yPick,widthPick,heightPick,*vp);為每個圖元分配名字并繪制切換回渲染模式分析選擇緩沖區(qū)中的數(shù)據(jù)OpenGL實現(xiàn)拾取操作2024/3/8213.6OpenGL中的菜單功能菜單注冊函數(shù)
glutCreateMenu(ProcessMenu);在菜單中加入菜單項voidglutAddMenuEntry(char*name,GLintvalue);將菜單與某個鼠標按鍵關(guān)聯(lián)voidglutAttachMenu(button);2024/3/822第四章2024/3/823OpenGL中層次模型的實現(xiàn)顯示列表的創(chuàng)建
glNewList(listID,listMode); glutSolidCube(2.0); ……
glEndList();顯示列表的執(zhí)行
voidglListBase(GLuint
offsetValue);2024/3/824多級顯示列表
OpenGL支持創(chuàng)建多級顯示列表,即在glNewList和glEndLsit函數(shù)對之間允許調(diào)用glCallList函數(shù)來執(zhí)行其他顯示列表。顯示列表的刪除
voidglDeleteLists(GLuint
listID,GLsizeirange);OpenGL中層次模型的實現(xiàn)2024/3/82526GLUT庫中的多面體函數(shù)OpenGL中的實體模型函數(shù)函數(shù)說明glutSolidTetrahedron()glutWireTetrahedron()繪制中心位于世界坐標系原點的實心四面體和線框四面體,四面體的半徑為
。glutSolidCube(size)glutWireCube(size)繪制中心位于世界坐標系原點的實心立方體和線框立方體,立方體的半徑為size,size是一個雙精度浮點值。glutSolidOctahedron()glutWireOctahedron()繪制中心位于世界坐標系原點的實心八面體和線框八面體,八面體的半徑為1.0。glutSolidDodecahedron()glutWireDodecahedron()繪制中心位于世界坐標系原點的實心12面體和線框12面體,12面體的半徑為
。glutSolidIcosahedron()glutWireIcosahedron()繪制中心位于世界坐標系原點的實心20面體和線框20面體,20面體的半徑為1.0。表4.1GLUT生成規(guī)則多面體的函數(shù)2024/3/82627GLUT庫中的二、三次曲面繪制實體或線框球面
voidglutSolidSphere/glutWireSphere(GLdoubleradius,GLintslices,GLintstacks);繪制實體或線框圓錐面
voidglutSolidCone/glutWireCone(GLdoubleradius,GLdoubleheight,GLintslices,GLintstacks);OpenGL中的實體模型函數(shù)2024/3/82728繪制實體或線框圓環(huán)
voidglutSolidTorus/glutWireTorus(GLdouble
innerRadius,GLdouble
outerRadius,GLint
slices,GLintstacks);繪制實體或線框茶壺
voidglutSolidTeapot/glutWireTeapot(GLdoublesize);OpenGL中的實體模型函數(shù)2024/3/82829GLU二次曲面函數(shù)定義一個二次曲面
GLUquadricObj*sphere;激活二次曲面繪制器
sphere=gluNewQuadric();指定二次曲面的繪制方式
gluQuadricDrawStyle(sphere,GLU_LINE);OpenGL中的實體模型函數(shù)2024/3/82930繪制二次曲面
gluSphere(sphere,radius,slices,stacks);
gluCylinder(sphere,baseRadius,topRadius,height,slices,stacks);
gluDisk(sphere,innerRadius,outerRadius,slices,stacks);OpenGL中的實體模型函數(shù)2024/3/8304.3非規(guī)則對象的表示分形幾何形狀語法基于分數(shù)維理論的隨機模型基于物理的模型粒子系統(tǒng)模型數(shù)據(jù)場可視化2024/3/831OpenGL中層次模型的實現(xiàn)顯示列表的創(chuàng)建
glNewList(listID,listMode); glutSolidCube(2.0); ……
glEndList();顯示列表的執(zhí)行
voidglListBase(GLuint
offsetValue);2024/3/832多級顯示列表
OpenGL支持創(chuàng)建多級顯示列表,即在glNewList和glEndLsit函數(shù)對之間允許調(diào)用glCallList函數(shù)來執(zhí)行其他顯示列表。顯示列表的刪除
voidglDeleteLists(GLuint
listID,GLsizeirange);OpenGL中層次模型的實現(xiàn)2024/3/833第五章2024/3/8345.8在OpenGL中繪圖點的繪制直線的繪制多邊形面的繪制OpenGL中的字符函數(shù)OpenGL中的反走樣2024/3/835點的繪制點的繪制
glBegin(GL_POINTS);glVertex3f(0.0f,0.0f,0.0f);glVertex3f(10.0f,0.0f,0.0f);
glEnd();點的屬性(大?。?/p>
voidglPointSize(GLfloatsize);2024/3/836(a)GL_LINES畫線模式(b)GL_LINE_STRIP畫線模式(c)GL_LINE_LOOP畫線模式圖5-57OpenGL畫線模式直線的繪制直線的繪制模式GL_LINESGL_LINE_STRIPGL_LINE_LOOP2024/3/837直線的繪制直線的屬性線寬voidglLineWidth(GLfloatwidth)線型
glEnable(GL_LINE_STIPPLE);
glLineStipple(GLintfactor,GLushortpattern);2024/3/838直線的繪制圖5-58畫線模式用于構(gòu)造線段2024/3/839多邊形面的繪制三角形面的繪制GL_TRIANGLESGL_TRIANGLE_STRIPGL_TRIANGLE_FAN四邊形面的繪制GL_QUADSGL_QUADS_STRIP多邊形面的繪制(GL_POLYGON)2024/3/840多邊形面的繪制多邊形面的繪制規(guī)則所有多邊形都必須是平面的。多邊形的邊緣決不能相交,而且多邊形必須是凸的。解決:對于非凸多邊形,可以把它分割成幾個凸多邊形(通常是三角形),再將它繪制出來。2024/3/841多邊形面的繪制問題:輪廓圖形狀態(tài)會看到組成大表面的所有小三角形。處理OpenGL提供了一個特殊標記來處理這些邊緣,稱為邊緣標記。
glEdgeFlag(True)
glEdgeFlag(False)422024/3/842多邊形面的屬性多邊形面的正反屬性(繞法)指定頂點時順序和方向的組合稱為“繞法”。繞法是任何多邊形圖元的一個重要特性。一般默認情況下,OpenGL認為逆時針繞法的多邊形是正對著的。
glFrontFace(GL_CW);2024/3/843多邊形面的屬性多邊形面的顏色glShadeModel(GL_FLAT)用指定多邊形最后一個頂點時的當前顏色作為填充多邊形的純色,唯一例外是GL_POLYGON圖元,它采用的是第一個頂點的顏色。
glShadeModel(GL_SMOOTH)從各個頂點給三角形投上光滑的陰影,為各個頂點指定的顏色之間進行插值。2024/3/844多邊形面的屬性多邊形面的顯示模式
glPolygonMode(GLenum
face,GLenummode);參數(shù)face用于指定多邊形的哪一個面受到模式改變的影響。參數(shù)mode用于指定新的繪圖模式。452024/3/845多邊形面的屬性多邊形面的填充
多邊形面既可以用純色填充,也可以用32×32的模板位圖來填充。
voidglPolygonStipple(const
GLubyte*mask);glEnable(GL_POLYGON_STIPPLE);462024/3/846多邊形面的屬性多邊形面的法向量法向量是垂直于面的方向上點的向量,它確定了幾何對象在空間中的方向。在OpenGL中,可以為每個頂點指定法向量。
voidglNormal3{bsidf}(TYPEnx,TYPEny,TYPEnz);voidglNormal3{bsidf}v(constTYPE*v);472024/3/847OpenGL中的字符函數(shù)GLUT位圖字符voidglutBitmapCharacter(void*font,intcharacter);GLUT矢量字符voidglutStrokeCharacter(void*font,intcharacter);482024/3/848OpenGL中的反走樣啟用反走樣
glEnable(primitiveType);啟用OpenGL顏色混和并指定顏色混合函數(shù)
glEnable(GL_BLEND);
glBlendFunc(GL_SC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年環(huán)境科學(xué)題集生態(tài)保護與可持續(xù)發(fā)展
- 2026年心理咨詢師考試題目及答案參考
- 2026年軟件測試員專業(yè)技能認證題庫及答案
- 2026年農(nóng)業(yè)技術(shù)推廣中級農(nóng)業(yè)種植技術(shù)模擬題
- 2026年智慧城市建設(shè)中的矛盾解決案例題庫
- 2026年鐵路列車事故現(xiàn)場救援策略考題解析
- 2026年旅游管理初級知識筆試模擬題及解析
- 2026年社會熱點話題解讀與答題實時反映社會現(xiàn)狀
- 2026年市場營銷策略與品牌建設(shè)先進案例試題
- 2026年雅思英語聽力與口語模擬試題
- 《慢性胃炎診療》課件
- 北京市延慶區(qū)2026屆八年級物理第一學(xué)期期末達標測試試題含解析
- 繼電器性能測試及故障診斷方案
- 酒店清欠協(xié)議書模板模板
- 長者探訪義工培訓(xùn)
- 地下室結(jié)構(gòu)加固技術(shù)方案
- 人教版高一必修二英語單詞表
- 2026年高考數(shù)學(xué)一輪復(fù)習(xí)周測卷及答案解析:第9周 數(shù)列的概念、等差與等比數(shù)列
- 電廠清潔生產(chǎn)管理制度
- 第五單元第22課-健康生活新設(shè)件人教版初中信息科技八年級全一冊
- 可信數(shù)據(jù)空間解決方案星環(huán)科技
評論
0/150
提交評論