資源描述:
《opengl編程輕松入門(mén)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、OpenGL編程輕松入門(mén)先編譯運(yùn)行一個(gè)簡(jiǎn)單的例子,這樣我們可以有一個(gè)直觀的印象先編譯運(yùn)行一個(gè)簡(jiǎn)單的例子,這樣我們可以有一個(gè)直觀的印象。從這個(gè)例子我們可以看到OpenGL可以做什么,當(dāng)然這個(gè)例子只做了很簡(jiǎn)單的一件事--繪制一個(gè)彩色的三角形。除此以外,我們還可以看到典型的OpenGL程序結(jié)構(gòu)及openGL的運(yùn)行順序。例1:本例在黑色的背景下繪制一個(gè)彩色的三角形,如圖一所示。#include#includevoidbackground(void){glClearCol
2、or(0.0,0.0,0.0,0.0);//設(shè)置背景顏色為黑色}voidmyDisplay(void){glClear(GL_COLOR_BUFFER_BIT);//buffer設(shè)置為顏色可寫(xiě)glBegin(GL_TRIANGLES);//開(kāi)始畫(huà)三角形glShadeModel(GL_SMOOTH);//設(shè)置為光滑明暗模式glColor3f(1.0,0.0,0.0);//設(shè)置第一個(gè)頂點(diǎn)為紅色glVertex2f(-1.0,-1.0);//設(shè)置第一個(gè)頂點(diǎn)的坐標(biāo)為(-1.0,-1.0)glColor3f(0.
3、0,1.0,0.0);//設(shè)置第二個(gè)頂點(diǎn)為綠色glVertex2f(0.0,-1.0);//設(shè)置第二個(gè)頂點(diǎn)的坐標(biāo)為(0.0,-1.0)glColor3f(0.0,0.0,1.0);//設(shè)置第三個(gè)頂點(diǎn)為藍(lán)色glVertex2f(-0.5,1.0);//設(shè)置第三個(gè)頂點(diǎn)的坐標(biāo)為(-0.5,1.0)glEnd();//三角形結(jié)束glFlush();//強(qiáng)制OpenGL函數(shù)在有限時(shí)間內(nèi)運(yùn)行}voidmyReshape(GLsizeiw,GLsizeih){glViewport(0,0,w,h);//設(shè)置視口glM
4、atrixMode(GL_PROJECTION);//指明當(dāng)前矩陣為GL_PROJECTIONglLoadIdentity();//將當(dāng)前矩陣置換為單位陣if(w<=h)gluOrtho2D(-1.0,1.5,-1.5,1.5*(GLfloat)h/(GLfloat)w);//定義二維正視投影矩陣elsegluOrtho2D(-1.0,1.5*(GLfloat)w/(GLfloat)h,-1.5,1.5);glMatrixMode(GL_MODELVIEW);//指明當(dāng)前矩陣為GL_MODELVIEW}
5、intmain(intargc,char**argv){/*初始化*/glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE
6、GLUT_RGB);glutInitWindowSize(400,400);glutInitWindowPosition(200,200);/*創(chuàng)建窗口*/glutCreateWindow("Triangle");/*繪制與顯示*/background();glutReshapeFunc(myReshape);glutDispla
7、yFunc(myDisplay);glutMainLoop();return(0);}首先創(chuàng)建工程,其步驟如下:1)創(chuàng)建一個(gè)Win32ConsoleApplication。2)鏈接OpenGLlibraries。在VisualC++中先單擊Project,再單擊Settings,再找到Link單擊,最后在Object/librarymodules的最前面加上OpenGL32.libGLu32.libGLaux.lib3)單擊ProjectSettings中的C/C++標(biāo)簽,將Preprocessorde
8、finitions中的_CONSOLE改為_(kāi)_WINDOWS。最后單擊OK?,F(xiàn)在你可以把下面的例子拷貝到工程中去,編譯運(yùn)行。你可以看到一個(gè)彩色的三角形。我們先看看main函數(shù)。函數(shù)中以glut開(kāi)頭的函數(shù)都包含在glut.h中。GLUT庫(kù)的函數(shù)主要執(zhí)行如處理多窗口繪制、處理回調(diào)驅(qū)動(dòng)事件、生成層疊式彈出菜單、繪制位圖字體和筆畫(huà)字體,以及各種窗口管理等任務(wù)。·glutInit用來(lái)初始化GLUT庫(kù)并同窗口系統(tǒng)對(duì)話協(xié)商?!lutInitDisplayMode用來(lái)確定所創(chuàng)建窗口的顯示模式。本例中的參數(shù)GLUT_S
9、INGLE指定單緩存窗口,這也是缺省模式,對(duì)應(yīng)的模式為GLUT_DOUBLE雙緩存窗口。參數(shù)GLUT_RGB指定顏色RGBA模式,這也是缺省模式,對(duì)應(yīng)的模式為GLUT_INDEX顏色索引模式窗口?!lutInitWindowSize初始化窗口的大小,第一個(gè)參數(shù)為窗口的寬度,第二個(gè)參數(shù)為窗口的高度,以像素為單位?!lutInitWindowPosition設(shè)置初始窗口的位置,第一個(gè)參數(shù)為窗口左上角x的坐標(biāo),第二個(gè)參數(shù)為窗口左上角y的坐標(biāo),