九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

圖形與多媒體-三維計(jì)算機(jī)圖形學(xué)(openGL簡介)

  • 資源ID:244877589       資源大?。?span id="24d9guoke414" class="font-tahoma">237.13KB        全文頁數(shù):74頁
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

圖形與多媒體-三維計(jì)算機(jī)圖形學(xué)(openGL簡介)

單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,*,圖形與多媒體,第六章 三維計(jì)算機(jī)圖形學(xué)(四)OpenGL簡介,汪國平,2000年秋季學(xué)期研究生課程,1,一、OpenGL簡介,什么是OpenGL,OpenGL的組成,一個(gè)簡單的繪圖程序,OpenGL函數(shù)命名規(guī)范,NT環(huán)境中OpenGL的命令解釋流程,2,什么是OpenGL,是一個(gè)功能強(qiáng)大的圖形庫,用戶可以很方便地開發(fā)所需要地有多種特殊視覺(如光照,紋理,透明,陰影)的三維圖形。,與軟硬件平臺無關(guān)的三維圖形軟件包,可運(yùn)行于多種窗口系統(tǒng)之上,包含圖元生成、投影、光照、光柵化等圖形顯示過程所需的功能,3,發(fā)展歷史,前身是由SGI公司為其圖形工作站開發(fā)的IRIS GL,是一個(gè)工業(yè)標(biāo)準(zhǔn)的三維圖形軟件接口。,向其他平臺移植時(shí),開發(fā)了OpenGL,有GL的功能,而且是開放的,使用于多種硬件平臺及操作系統(tǒng),,用戶可以創(chuàng)建出接近光線跟蹤的高質(zhì)量靜止或動畫的三維彩色圖象,而且是要比光線跟蹤算法快一個(gè)數(shù)量級。,4,OpenGL的組成,OpenGL庫,包括115個(gè)基本函數(shù),函數(shù)以gl開頭,例:glColor3f(), glTranslate3f().,完成圖元的定義、幾何變換、投影等功能,5,OpenGL的組成,OpenGL實(shí)用庫,實(shí)用函數(shù)43個(gè),函數(shù)以glu開頭,例:gluPerspective();,完成更高層的圖形處理如曲線曲面的生成、圖象操作等,OpenGL輔助庫,包括函數(shù)31個(gè),函數(shù)以aux開頭,例:auxInitWindow();,主要用于窗口管理,6,主要特點(diǎn),OpenGL可以在網(wǎng)絡(luò)上工作,即客戶機(jī)/服務(wù)器型,顯示圖形的計(jì)算機(jī)(客戶機(jī))可以不是運(yùn)行圖形程序的計(jì)算機(jī)(服務(wù)器),客戶機(jī)與服務(wù)器可以是不同類型的計(jì)算機(jī),只要兩者服從相同的協(xié)議。,OpenGL是與硬件無關(guān)的軟件接口,可以在多種硬件平臺上運(yùn)行,使得OpenGL的應(yīng)用程序有較好的移植性。,7,OpenGL的工作順序,構(gòu)造幾何要素(點(diǎn),線,多邊形,圖象,位圖),創(chuàng)建對象的數(shù)學(xué)描述。,在三維空間上放置對象,選擇有利的場景觀察點(diǎn)。,計(jì)算對象的顏色,這些顏色可能直接定義,或由光照條件及紋理間接給出。,光柵化,把對象的數(shù)學(xué)描述和顏色信息轉(zhuǎn)換到屏幕的象素。另外,也可能執(zhí)行消隱,以及對象素的操作。,8,OpenGL程序的基本結(jié)構(gòu),第一部分是初始化部分:,主要是設(shè)置一些OpenGL的狀態(tài)開關(guān),如顏色模式(RGBA或ALPHA)的選擇,是否作光照處理(若有的話,還需設(shè)置光源的特性),深度檢驗(yàn),裁剪等等。,這些狀態(tài)一般都用函數(shù)glEnable(?), glDisable(?) 來設(shè)置,?表示特定的狀態(tài)。,9,第二部分設(shè)置觀察坐標(biāo)系下的取景模式和取景框大小。主要用到三個(gè)函數(shù):,void glViewport(left,top,right,bottom);,設(shè)置在屏幕上的窗口大小,四個(gè)參數(shù)描述屏幕窗口四個(gè)角上的坐標(biāo)(以象素表示);,void glOrtho(left,right,bottom,top,near,far);,設(shè)置投影方式為正交投影(平行投影),其取景體積是一個(gè)各面均為矩形的六面體;,void gluPerspective(fovy,aspect,zNear,zFar);,設(shè)置投影方式為透視投影,其取景體積是一個(gè)截頭錐體,在這個(gè)體積內(nèi)的物體投影到錐的頂點(diǎn)。,10,第三部分是OpenGL的主要部分,使用OpenGL的庫函數(shù)構(gòu)造幾何物體對象的數(shù)學(xué)描述,包括點(diǎn)線面的位置和拓?fù)潢P(guān)系,幾何變換,光照處理等等。,注:移植到使用MFC框架下的Windows程序中,由于Windows自身有一套顯示方式,需要進(jìn)行一些必要的改動以協(xié)調(diào)這兩種不同顯示方式。,11,繪圖前的一些準(zhǔn)備工作,清除當(dāng)前窗口的內(nèi)容,以免影響繪圖的效果,void glClearColor ( red , green , blue , alpha );,給定當(dāng)前屏幕的背景設(shè)置顏色,red , green , blue , alpha 為RGBA顏色值.,12,void glClear ( mask );,命令標(biāo)志要清除的緩沖區(qū)??梢郧宄木彌_區(qū)如下表所示:,緩沖區(qū),名稱,顏色緩沖區(qū),GL_COLOR_BUFFER_BIT,深度緩沖區(qū),GL_DEPTH_BUFFER_BIT,累加緩沖區(qū),GL_ACCUM_BUFFER_BIT,模板緩沖區(qū),GL_STENCIL_BUFFER_BIT,13,可以用,glClearColor, glClearDepth, glClearIndex, glClearStencil, glClearAcc,函數(shù)為各自對應(yīng)的緩沖區(qū)賦值。若要同時(shí)清除多個(gè)緩沖區(qū),使用上表中所列的,mask,位或組合,在速度上要比使用多次調(diào)用,glClear,函數(shù)要快得多,。,14,描述幾何要素,按一定的順序給出幾何要素的頂點(diǎn),,glVertex,命令指定一個(gè)頂點(diǎn),并在生成頂點(diǎn)后,把當(dāng)前顏色,紋理坐標(biāo),法線等值賦給這個(gè)頂點(diǎn)。,函數(shù),void glVertex234sifdv(coords);,有時(shí)用矢量形式定義頂點(diǎn),執(zhí)行效率高,但是它只能在glBegin與glEnd之間調(diào)用才有意義。,15,glBegin,標(biāo)志幾何要素定義的開始,,glEnd,函數(shù)則標(biāo)志結(jié)束一個(gè)幾何要素的定義。,函數(shù),void glBegin(Glenum mode);,mode 的值見下表。,16,Mode 的值,解釋,GL_POINTS,一系列獨(dú)立的點(diǎn),GL_LINES,每兩點(diǎn)相連成為線段,GL_POLYGON,簡單,凸多邊形的邊界,GL_TRIANGLES,三點(diǎn)相連成為一個(gè)三角形,GL_QUADS,四點(diǎn)相連成為一個(gè)四邊形,GL_LINE_STRIP,頂點(diǎn)相連成為一系列線段,GL_LINE_LOOP,頂點(diǎn)相連成為一系列線段,連接最后一點(diǎn)與第一點(diǎn),GL_TRIANGLE_STRIP,相連的三角形帶,GL_TRIANGLE_FAN,相連的三角形扇形,GL_QUAD_STRIP,相連的四邊形帶,17,一個(gè)簡單的繪圖程序,例程,#include ,#include ,#include ,#include ,void main(void),OpenAWindow();/創(chuàng)建一個(gè)窗口,InitOpenGL();/初始化OpenGL,glColor3f(1.0,1.0,1.0);/設(shè)置當(dāng)前顏色,glBegin(GL_POLYGON);/開始繪圖,glVertex2f(-0.5,-0.5);,glVertex2f(-0.5,0.5);,glVertex2f(0.5,0.5);,glVertex2f(0.5,-0.5);,glEnd();,glFlush();/強(qiáng)制輸出,KeepTheWindowOnScreenForAWhile();/使窗口在屏幕上保留一會,18,OpenGL函數(shù)命名規(guī)范,void glVertex3fv(Glfloat *vertex);,前綴 后綴,前綴,gl ,glu,aux-該函數(shù)屬于哪個(gè)函數(shù)庫,后綴,2,3,4-參數(shù)的維數(shù),b,s,l,f,d,ub,us,ui-參數(shù)的數(shù)據(jù)類型,v-以數(shù)組方式傳遞參數(shù),函數(shù)名中的單詞首寫字母大寫,19,NT環(huán)境中OpenGL的命令解釋流程,OpenGL命令,OpenGL DLL,客戶,服務(wù)器,OpenGL ICD,加速卡DDI,Win32 DDI,Server DLL,視頻驅(qū)動,應(yīng)用程序,不帶加速卡 帶加速卡,應(yīng)用程序,OpenGL命令,OpenGL DLL,客戶,服務(wù)器,Server DLL,Win32 DDI,視頻驅(qū)動,20,NT環(huán)境中OpenGL的命令解釋流程,ICD是可安裝的客戶驅(qū)動(Installable Client Driver),DLL是動態(tài)聯(lián)接庫(Dynamic Link Library),DDI是設(shè)備驅(qū)動接口(Device Driver Interface),21,二、OpenGL,圖元,創(chuàng)建第一個(gè)應(yīng)用程序,圖元的繪制,圖元的屬性,22,創(chuàng)建第一個(gè)應(yīng)用程序(1/8),初始化顯示方式,例: 將顯示方式置為單緩存、直接顏色方式,void auxInitDisplayMode(GL_SINGLE|AUX_RGBA);,void auxInitDisplayMode(Glbitfield mask);,mask:GL_DOUBLE(GL_SINGLE)|,AUX_RGBA(AUX_INDEX)|,AUX_DEPTH |AUX_STENCIL|AUX_ACCUM,23,創(chuàng)建第一個(gè)應(yīng)用程序(2/8),創(chuàng)建窗口,初始化窗口的位置與大小,創(chuàng)建并顯示窗口,void auxInitPosition(Glint x,GLint y,GLsizei width,GLsizei height);,(x,y):窗口的原點(diǎn),width,,,height,:窗口的寬和高,void auxInitWindow(GLbyte *title);,title,:窗口標(biāo)題,24,創(chuàng)建第一個(gè)應(yīng)用程序(3/8),初始化幀緩存(顏色緩存),指定初始顏色,清幀緩存,void glClearColor(GLclampf r,GLclampf g,GLclampf b,GLclampf a);,缺省值:,(0.0,0.0,0.0,0.0),void glClear(GL_COLOR_BUFFER_BIT);,25,創(chuàng)建第一個(gè)應(yīng)用程序(4/8),初始化深度緩存,指定初始深度值,清深度緩存,void glClearDepth(GLclampd depth);,缺省值:,0.0,void glClear(GL_DEPTH_BUFFER_BIT);,26,創(chuàng)建第一個(gè)應(yīng)用程序(5/8),設(shè)置投影方式,置投影方式為平行投影,置投影方式為透視投影,void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,Gldouble near,GLdouble far);,void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,Gldouble near,GLdouble far);,27,創(chuàng)建第一個(gè)應(yīng)用程序(6/8),指定圖元的顏色,繪圖,強(qiáng)制輸出,void glColor*();,void glFlush(void);,28,創(chuàng)建第一個(gè)應(yīng)用程序(7/8),例程2-1,#include ,#include ,#include ,#include ,void KeepTheWindowOnScreenForAWhile(),_sleep(2000);,void main(void),auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);,auxInitPosition(0,0,500,400);,auxInitWindow("Create Your Own Program");,glClearColor(0.0,0.0,0.0,0.0);,glClearDepth(0.0);,glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);,29,創(chuàng)建第一個(gè)應(yīng)用程序(8/8),glOrtho(-1.0,1.0,-1.0,1.0,-1.0,1.0);glColor3f(1.0,1.0,1.0);glBegin(GL_POLYGON);glVertex3f(-0.5,-0.5,0.0);glVertex3f(-0.5,0.5,0.0);glVertex3f(0.5,0.5,0.0);glVertex3f(0.5,-0.5,0.0);glEnd(); glFlush();KeepTheWindowOnScreenForAWhile(); ,30,圖元的繪制(1/2),圖元的種類,點(diǎn)、線段、多邊形、矩形,圖元的表示,點(diǎn):三維坐標(biāo)(x,y,z),齊次坐標(biāo)(x,y,z,1),線段:兩個(gè)端點(diǎn),多邊形:頂點(diǎn)序列,矩形:左下角點(diǎn)、右上角點(diǎn),繪制圖元,定義一個(gè)頂點(diǎn),void glVertex234sifdv(TYPE coords);,例:,glVertex3f(1.0,1.0,1.0);,31,圖元的繪制(2/2),glBegin()與glEnd(),允許在,glBegin(),與,glEnd(),之間調(diào)用的,OpenGL,命令,void glBegin(GLenum mode);,mode:GL_POINTS,GLLINES,GL_LINE_STRIP,GL_LINE_LOOP,GL_POLYGON,GL_TRIANGLE_STRIP,GL_TRIANGLE_FAN,GL_QUADS,GL_QUAD_STRIP,void glEnd(void);,glVertex*();,glColor*();,glIndex();,glNormal();,glEvalCoord*();,glCallList(),glCallLists();,glTexCoord();,glEdgeFlag();,glMaterial();,32,圖元的屬性(1/5),顏色,點(diǎn),大小(缺省值為1),線段,線寬,void glColor*();,void glIndex();,void glPointSize(GLfloat size);,void glLineWidth(GLfloat width);,33,圖元的屬性(2/5),線型:連續(xù)線(缺省值)、點(diǎn)畫線等,多邊形,繪制方式:頂點(diǎn)、邊界、填充,void glEnable(GL_LINE_STIPPLE);,void glLineStipple(GLint factor,GLushort pattern);,例:patternfactor結(jié)果,0x00FF 1,0x00FF 2,void glPolygonMode(GLenum face,GLenum mode);,face:GL_FRONT_AND_BACK(缺省值),GL_FRONT,GL_BACK,mode:GL_POINT,GL_LINE,GL_FILL(,缺省值),34,圖元的屬性(3/5),前向面與后向面,背面剔除,void glFrontFace(GLenum mode);,mode:GL_CCW(缺省值),GL_CW,void glCullFace(GLenum mode);,mode:GL_FRONT,GL_BACK(缺省值),GL_FRONT_AND_BACK,35,圖元的屬性(4/5),多邊形填充方式,均勻填色方式,位圖不透明方式,位圖透明方式,象素圖方式,void glEnable(GL_POLYGON_STIPPLE);,void glPolygonStipple(const Glubyte *mask);,mask:,位圖,36,圖元的屬性(5/5),標(biāo)記多邊形邊界,多邊形法向,void glEdgeFlag(GLboolean flag);,void glNormal3*(TYPE nx,TYPE ny,TYPE nz);,void glNormal3*v(const TYPE *v);,37,三、輔助庫,初始化一個(gè)窗口,處理輸入事件,修改查色表,繪制簡單的三維物體,管理后臺進(jìn)程,運(yùn)行主程序,輔助庫中定義的虛鍵值,38,為什么需要輔助庫,使得OpenGL具有平臺無關(guān)性,窗口管理,輸入事件處理,繪制簡單的三維物體,后臺與主進(jìn)程管理,39,窗口管理(1/2),設(shè)置窗口顯示方式,void APIENTRY auxInitDisplayMode(GLenum mode);,mode:,(1)顏色方式:AUX_RGBA(直接顏色),AUX_INDEX(索引顏色),(2)緩存方式:AUX_SINGLE(單緩存),AUX_DOUBLE(雙緩存),(3)深度緩存位數(shù):AUX_DEPTH(16位),AUX_DEPTH24(32位),(4)模板緩存位數(shù):AUX_STENCIL(4位),(5)Alpha緩存位數(shù):AUX_ALPHA(8位),同一組中只能選一個(gè),不同組之間用“,|,”相或,40,窗口管理(2/2),創(chuàng)建窗口,設(shè)置窗口的位置和大小,GLenum APIENTRY auxInitWindow(LPCTSTR title);,title,:,窗口的標(biāo)題,為一字符串,void APIENTRY auxInitPosition(int x, int y, int w, int h);,x,y定義了窗口的起始點(diǎn)。,w,,,h,定義了窗口的寬和高。,41,處理輸入事件,窗口尺寸改變,鍵盤響應(yīng),鼠標(biāo)響應(yīng),void APIENTRY auxReshapeFunc(AUXRESHAPEPROC myReshape);,myReshape,是處理窗口尺寸改變消息的函數(shù),void APIENTRY auxKeyFunc(int key,AUXKEYPROC mykeyProc);,key,是鍵的虛鍵值,輔助庫中定義了大多數(shù)鍵盤上的虛鍵值。,mykeyProc,是對應(yīng)于,key,的處理函數(shù),不同的,key,可以有,不同的函數(shù)。,void APIENTRY auxMouseFunc(int b,int m,AUXMOUSEPROC myMouseFunc);,b,是鼠標(biāo)鍵的虛鍵值。,m,是鍵的狀態(tài)。,myMouseProc,是對應(yīng)于,b,和,m,的處理函數(shù),42,修改查色表,void APIENTRY auxSetOneColor,(,int index,,,float r,,,float g,,,float b),;,設(shè)置,index,所指向的顏色。各個(gè)顏色分量由,r,,,g,,,b,給出,43,繪制簡單的三維物體(1/2),void APIENTRY auxWireSphere(GLdouble);/繪制球(線框圖),void APIENTRY auxSolidSphere(GLdouble);/繪制球(填充圖),void APIENTRY auxWireCube(GLdouble);/繪制立方體,void APIENTRY auxSolidCube(GLdouble);,void APIENTRY auxWireBox(GLdouble, GLdouble, GLdouble);,/繪制長方體,void APIENTRY auxSolidBox(GLdouble, GLdouble, GLdouble);,void APIENTRY auxWireTorus(GLdouble, GLdouble);,/繪制圓環(huán)面,void APIENTRY auxSolidTorus(GLdouble, GLdouble);,void APIENTRY auxWireCylinder(GLdouble, GLdouble);,/繪制圓柱,void APIENTRY auxSolidCylinder(GLdouble, GLdouble);,void APIENTRY auxWireCone(GLdouble, GLdouble); /繪制圓錐,44,繪制簡單的三維物體(2/2),void APIENTRY auxSolidCone(GLdouble, GLdouble);,void APIENTRY auxWireTeapot(GLdouble);/繪制茶壺,void APIENTRY auxSolidTeapot(GLdouble);,void APIENTRY auxWireIcosahedron(GLdouble);/繪制二十面體,void APIENTRY auxSolidIcosahedron(GLdouble);,void APIENTRY auxWireDodecahedron(GLdouble);/繪制十二面體,void APIENTRY auxSolidDodecahedron(GLdouble);,void APIENTRY auxWireOctahedron(GLdouble); /繪制八面體,void APIENTRY auxSolidOctahedron(GLdouble);,void APIENTRY auxWireTetrahedron(GLdouble);/繪制四面體,void APIENTRY auxSolidTetrahedron(GLdouble);,45,后臺與主進(jìn)程管理,后臺程序,主程序,void APIENTRY auxIdleFunc(AUXIDLEPROC idleProc);,idleProc,是當(dāng)系統(tǒng)空閑時(shí)調(diào)用的函數(shù),void APIENTRY auxMainLoop(AUXMAINPROC displayFunc);,diplayFunc,是繪制場景的函數(shù),46,輔助庫中定義的虛鍵值,鼠標(biāo):AUX_LEFTBUTTON, AUX_RIGHTBUTTON, AUX_MIDDLEBUTTON,控制鍵:AUX_SHIFT,AUX_CONTROL,AUX_RETURN,AUX_ESCAPE,,AUX_SPACE,AUX_LEFT,AUX_UP,AUX_RIGHT,AUX_DOWN等,一般鍵:AUX_A,AUX_B,AUX_C等(大寫字母),AUX_a,AUX_b,AUX_c等(小寫字母),AUX_0,,,AUX_1,,,AUX_2,等(數(shù)字),47,四、幾何變換與投影,坐標(biāo)系,基本幾何變換,變換的分解與合成,變換的模式,矩陣棧及其操作,投影,視區(qū)參數(shù)的設(shè)置,三維圖形的變換流程,48,坐標(biāo)系,右手坐標(biāo)系,窗口,x,y,z,o,49,OpenGL的變換過程,OpenGL對圖象進(jìn)行變換與照相機(jī)拍攝物體的過程相似。,分為以下四步:,支起三角架,把照相機(jī)放在場景中,相當(dāng)于OpenGL的取景變換,把要拍攝的場景固定在要拍攝的物體上,相當(dāng)于OpenGL的模型變換,選擇照相機(jī)鏡頭或調(diào)節(jié)焦距,相當(dāng)于OpenGL的投影變換。,確定照片的大小,可以放大照片的某一部分,相當(dāng)于,OpenGL,的視見區(qū)變換,50,投影變換,就是要確定一個(gè)取景體積,其作用有兩個(gè):,確定物體投影到屏幕的方式,即是透視投影還是正交投影。,確定從圖象上裁剪掉哪些物體或物體的某些部分。,投影變換包括透視投影和正交投影(平行投影),51,透視投影,其取景體積是一個(gè)截頭錐體,再這個(gè)體積內(nèi)的物體投影到錐的頂點(diǎn),有g(shù)lFrustum命令定義這個(gè)截頭錐體,這個(gè)取景體積可以是不對稱的,void glFrustum(Gldouble left,Gldouble right,Gldouble bottom,Gldouble top,Gldouble near,Gldouble far);,52,透視投影的示意圖,53,正交投影,其取景體積是一個(gè)各面均為矩形的六面體,用glOrtho命令創(chuàng)建正交平行的取景體積,void glOrtho(Gldouble left,Gldouble right,Gldouble bottom,Gldouble top,Gldouble near,Gldouble far);,54,正交投影的示意圖,55,基本幾何變換,平移變換,放縮變換,旋轉(zhuǎn)變換,viod glTranslatefd(TYPE deltax,TYPE deltay,TYPE deltaz);,void glScalefd(TYPE sx,TYPE sy,TYPE sz);,void glRotatefd(TYPE angle,TYPE x,TYPE y,TYPE z);,(x,y,z),o,旋轉(zhuǎn)正向,56,變換的模式,固定坐標(biāo)系模式,活動坐標(biāo)系模式,57,矩陣棧及其操作(1/8),三種矩陣棧,模型觀察變換矩陣棧(至少32個(gè)矩陣),投影變換矩陣棧(至少2個(gè)矩陣),紋理變換矩陣棧,(至少2個(gè)矩陣),矩陣棧的初始狀態(tài),包含一個(gè)單位矩陣,確定當(dāng)前矩陣棧,void glMatrixMode(GLenum mode);,mode:GL_MODELVIEW,GL_PROJECTION,GL_TEXTURE,58,矩陣棧及其操作(2/8),清矩陣棧棧頂,void glLoadIdentity(void);,將棧頂矩陣替換為單位矩陣,取消之前變換的作用,I,M,glLoadIdentity(),59,矩陣棧及其操作(3/8),壓棧,void glPushMatrix(void);,復(fù)制棧頂矩陣并壓入棧,記住位置,M,M,glPushMatrix(),M,坐標(biāo)系1,坐標(biāo)系2,坐標(biāo)系1,坐標(biāo)系2,坐標(biāo)系3,60,矩陣棧及其操作(4/8),出棧,void glPopMatrix(void);,彈出棧頂矩陣,回到記住的位置,M1,glPopMatrix(),M1,M2,坐標(biāo)系1,坐標(biāo)系2,坐標(biāo)系3,坐標(biāo)系1,坐標(biāo)系2,61,矩陣棧及其操作(5/8),設(shè)置棧頂矩陣,void glLoadMatrix(const TYPE *matrix);,將棧頂矩陣替換為,matrix,實(shí)現(xiàn)任意變換,M2,M1,glLoadMatrix(M2),62,矩陣棧及其操作(6/8),矩陣相乘,void glMultiMatrixfd(const TYPE *matrix);,以矩陣,matrix,右乘棧頂矩陣并替換棧頂矩陣,實(shí)現(xiàn)任意變換,M1*M2,M1,glMultiMatrix(M2),63,矩陣棧及其操作(7/8),基本幾何變換的作用,平移變換,放縮變換,M*T,glTranslatefd(),M,M*S,glScalefd(),M,64,矩陣棧及其操作(8/8),旋轉(zhuǎn)變換,M*R,glRotatefd(),M,65,投影(1/5),缺省的觀察坐標(biāo)系,窗口,x,u,y,v,z,n,o,66,投影(2/5),改變?nèi)笔〉挠^察坐標(biāo)系,設(shè)置任意觀察坐標(biāo)系,glMatrixMode(GL_PROJECTION);,glRotatef (75, 1.0, 0.0, 0.0);,void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez,Gldouble centerx, GLdouble centery, GLdouble centerz,Gldouble upx, GLdouble upy, GLdouble upz);,(eyex, eyey, eyez)為視點(diǎn)/投影中心,(centerx, centery, centerz)為觀察參考點(diǎn)的位置,(upx, upy, upz)為觀察正向,例程4-4,67,投影(3/5),平行投影參數(shù)的設(shè)置,void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,Gldouble near,GLdouble far);,void glOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top);,68,投影(4/5),透視投影參數(shù)的設(shè)置,void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,Gldouble near,GLdouble far);,left,right,top,bottom,near,far,坐標(biāo)原點(diǎn),69,投影(5/5),void gluPerspective(GLdouble fory,GLdouble aspect,GLdouble near,GLdouble far);,w,坐標(biāo)原點(diǎn),h,aspect = w/h,near,far,fovy,70,視區(qū)參數(shù)的設(shè)置,m,void glViewport(GLint x,GLint y,GLint width,GLint height);,(x,y):,視區(qū)左下角點(diǎn),width,,,height,:,視區(qū)的寬和高,71,三維圖形的變換流程,模型變換,觀察變換,投影變換,窗口至視,區(qū)的變換,72,本章習(xí)題,構(gòu)造一個(gè)三維圖形交互環(huán)境,用真實(shí)感三維造型顯示一個(gè)三維形體,并可以用鼠標(biāo)驅(qū)動(平移和旋轉(zhuǎn)、放大和縮?。┧@示的物體。,作業(yè)要求:,三維形體可以自選,但要在交互環(huán)境中交互輸入,建議顯示“計(jì)算機(jī)圖形學(xué)”字形;,真實(shí)感繪制可以用OpenGL,建議用光線跟蹤法繪制;,三維交互環(huán)境必須自己構(gòu)造,并要實(shí)現(xiàn)實(shí)時(shí)交互功能;,可以由2-3人作為一個(gè)小組,共同完成。,73,END,74,

注意事項(xiàng)

本文(圖形與多媒體-三維計(jì)算機(jī)圖形學(xué)(openGL簡介))為本站會員(wuli****0220)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!