




已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
虛擬現(xiàn)實(shí)與系統(tǒng)仿真實(shí)驗(yàn)指導(dǎo)書(shū)20132實(shí)驗(yàn)一 基于MFC的基本OpenGL應(yīng)用程序生成一:實(shí)驗(yàn)?zāi)康?. 熟悉VC+2005集成開(kāi)發(fā)環(huán)境;2. 熟悉基本MFC應(yīng)用程序的生成;3. 掌握基于MFC的基本OpenGL應(yīng)用程序生成。二:實(shí)驗(yàn)內(nèi)容1. 建立基于MFC的基本OpenGL應(yīng)用程序;2. 配置應(yīng)用程序,添加OpenGL鏈接庫(kù)文件;3. 建立OpenGL的基本環(huán)境。三:實(shí)驗(yàn)背景知識(shí)OpenGL是一種圖形顯示軟件工具包,它為圖形硬件提供軟件接口。OpenGL為計(jì)算機(jī)動(dòng)畫(huà)提供由圖形生成圖像幀的工具。MFC提供的圖形用戶界面程序設(shè)計(jì)技術(shù)可以編寫(xiě)人機(jī)交互程序,OpenGL技術(shù)可以進(jìn)行各種圖形繪制。四:實(shí)驗(yàn)步驟1. 文件-新建-項(xiàng)目 選擇MFC應(yīng)用程序 輸入名稱OpenGLPlat2. 右擊項(xiàng)目名,選擇屬性,再選擇鏈接器中的輸入選項(xiàng),附加依賴項(xiàng):opengl32.lib; glu32.lib ;glaux.lib3選擇類視圖模式,右擊View,再添加變量和頭文件或直接在View頭文件中添加變量:protected:HGLRC m_hRC;添加包含OpenGL頭文件的語(yǔ)句:在COpenGLPlatView.cpp中添加代碼#include #include #include 4右擊屬性 消息按鈕 選擇WM_CREATE 添加在int COpenGLPlatView:OnCreate(LPCREATESTRUCT lpCreateStruct)函數(shù)中添加代碼/添加新的代碼開(kāi)始CClientDC dc(this); PIXELFORMATDESCRIPTOR pfd; memset(&pfd,0,sizeof(PIXELFORMATDESCRIPTOR); pfd.nSize=sizeof(PIXELFORMATDESCRIPTOR); pfd.nVersion=1; pfd.dwFlags=PFD_DRAW_TO_WINDOW| PFD_SUPPORT_OPENGL| PFD_DOUBLEBUFFER; pfd.iPixelType=PFD_TYPE_RGBA; pfd.cColorBits=24; pfd.cDepthBits=32; int pixelFormat=ChoosePixelFormat(dc.m_hDC,&pfd); SetPixelFormat(dc.m_hDC,pixelFormat,&pfd); m_hRC=wglCreateContext(dc.m_hDC);return 0;右擊屬性 消息按鈕 選擇WM_DESTROY 添加void COpenGLPlatView:OnDestroy()函數(shù)中添加代碼 /添加新的代碼開(kāi)始wglMakeCurrent(NULL,NULL);wglDeleteContext(m_hRC);m_hRC=NULL;右擊屬性 消息按鈕 選擇WM_SIZE 添加void COpenGLPlatView:OnSize(UINT nType, int cx, int cy) 函數(shù)中添加代碼 /添加新的代碼開(kāi)始CClientDC dc(this);wglMakeCurrent(dc.m_hDC,m_hRC); glMatrixMode(GL_PROJECTION);glLoadIdentity();double d=10;double n=100;glOrtho(-cx/n,cx/n,-cy/n,cy/n,-d,d);glMatrixMode(GL_MODELVIEW);glViewport(0,0,cx,cy);wglMakeCurrent(NULL,NULL);5.在OpenGLPlatView.cpp中OnDraw函數(shù)中添加以下代碼:void CMy1View:OnDraw(CDC* pDC) / 把 ”/*pDC*/” 改成 pDCCOpenGLPlatDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;/ TODO: 在此處為本機(jī)數(shù)據(jù)添加繪制代碼wglMakeCurrent(pDC-m_hDC,m_hRC);glClearColor(1.0f,1.0f,1.0f,1.0f); glClearDepth(1.0);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glEnable(GL_COLOR_MATERIAL);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0); glEnable(GL_AUTO_NORMAL);glEnable(GL_NORMALIZE);glEnable(GL_DEPTH_TEST);glDepthFunc(GL_LESS);glMatrixMode(GL_MODELVIEW);glLoadIdentity();glColor3f(1.0f,0.0f,0.0f);glRotated(60.0,1.0,1.0,1.0); /茶壺auxWireTeapot(3.0);SwapBuffers(pDC-m_hDC);wglMakeCurrent(NULL,NULL);五:實(shí)驗(yàn)結(jié)果 實(shí)驗(yàn)二OpenGL基本圖形元素和模型變換一:實(shí)驗(yàn)?zāi)康?. 掌握二次曲面的繪制函數(shù)及其應(yīng)用方法。2. 掌握基本實(shí)體模型的繪制函數(shù)及其應(yīng)用方法。二:實(shí)驗(yàn)內(nèi)容1. 學(xué)習(xí)二次曲面的繪制函數(shù)及其應(yīng)用方法。2. 學(xué)習(xí)基本實(shí)體模型的繪制函數(shù)及其應(yīng)用方法。三:實(shí)驗(yàn)背景知識(shí)OpenGL提供了二次曲面和基本實(shí)體模型的繪制函數(shù)及其應(yīng)用方法。這些二次曲面和基本實(shí)體模型在OpenGL內(nèi)部實(shí)現(xiàn)中實(shí)際上也是將它們離散分割成為大量的多邊形,然后通過(guò)繪制多邊形的方法實(shí)現(xiàn)對(duì)這些二次曲面和基本實(shí)體模型的繪制。四:實(shí)驗(yàn)程序 實(shí)驗(yàn)步驟14與上述實(shí)驗(yàn)1相同5在OpenGLPlatView.cpp中OnDraw函數(shù)中添加以下代碼:wglMakeCurrent(pDC-m_hDC,m_hRC);glMatrixMode(GL_MODELVIEW); /二次曲面glColor3f(1.0f,0.0f,0.0f);GLUquadric* qd=gluNewQuadric();/創(chuàng)建二次曲面對(duì)象gluQuadricDrawStyle(qd,GLU_FILL);/設(shè)置二次曲面對(duì)象繪制模式GLU_LINE;GLU_SILHOUETTE;GLU_POINTglLoadIdentity();glRotated(-105.0,1.0,0.0,0.0);glTranslated(-6.0,0.0,-2.0);gluCylinder(qd,2.0,1.0,4.0,30,4);/(圓臺(tái),下底面半徑,上底面半徑,圓臺(tái)高度,繞z軸分割瓣數(shù),繞z軸方向?qū)訑?shù))glLoadIdentity();glTranslated(-6.0,0.0,-2.0);gluDisk(qd,1.0,2.0,30,4);/平面圓盤(pán)(,內(nèi)圓半徑,外圓半徑,扇形瓣數(shù),環(huán)的個(gè)數(shù))/.gluPartialDisk(qd,1.0,2.0,10,4,0,75);/拱狀圖形(,內(nèi)圓半徑,外圓半徑,扇形瓣數(shù),環(huán)的個(gè)數(shù),起始角,圖形張開(kāi)的角度)/.gluSphere(qd,2.0,30,6);/球(,球的半徑,分割的瓣數(shù),分割的層次)auxSolidTetrahedron(4.0);/實(shí)體模型auxWireTeapot();auxSolidTeapot();/auxWireSphere(3.0);auxSolidSphere(3.0);/auxWireCube(4.0);auxSolidCube(4.0);/auxWireBox(3.0,4.0,5.0);auxSolidBox(3.0,4.0,5.0);/auxWireTorus(1.0,3.0);/圓環(huán)auxSolidTorus(1.0,3.0);/auxWireCylinder(2.0,4.0);auxSolidCylinder(2.0,4.0);/auxWireIcosahedron(4.0);auxSolidIcosahedron(4.0);/二十面體 /auxWireOctahedron(4.0);auxSolidOctahedron(4.0);/八面體 /auxWireTetrahedron(4.0);auxSolidTetrahedron(4.0);/四面體 /auxWireDodecahedron(4.0);auxSolidDodecahedron(4.0);/十二面體 /auxWireCone(2.0,4.0);auxSolidCone(2.0,4.0);/圓錐體 SwapBuffers(pDC-m_hDC); /雙緩沖wglMakeCurrent(NULL,NULL); 實(shí)驗(yàn)三 光照與材質(zhì)一:實(shí)驗(yàn)?zāi)康模?. 掌握利用OpenGL編寫(xiě)繪制具有真實(shí)感效果的圖形方法。2. 掌握添加光源和設(shè)置顏色材料屬性的方法。二:實(shí)驗(yàn)內(nèi)容:1. 掌握添加光源的實(shí)現(xiàn)方法。2. 掌握設(shè)置顏色和材料屬性的方法。三:實(shí)驗(yàn)要求通過(guò)本實(shí)驗(yàn),掌握添加光源和設(shè)置顏色材料屬性的方法,利用OpenGL編寫(xiě)繪制具有真實(shí)感效果的圖形。四:實(shí)驗(yàn)程序?qū)嶒?yàn)步驟14與上述實(shí)驗(yàn)1相同5在OpenGLPlatView.cpp中OnDraw函數(shù)中添加以下代碼:wglMakeCurrent(pDC-m_hDC,m_hRC);glClearColor(1.0f,1.0f,1.0f,1.0f);glClearDepth(1.0);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glEnable(GL_COLOR_MATERIAL);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glEnable(GL_AUTO_NORMAL);glEnable(GL_NORMALIZE);glEnable(GL_DEPTH_TEST);glDepthFunc(GL_LESS);/設(shè)置模型變換矩陣glMatrixMode(GL_MODELVIEW);glLoadIdentity(); /設(shè)置光源參數(shù)GLfloat light_position=1.0f,1.0f,1.0f,0.0f;GLfloat light_ambient=0.2f,0.2f,0.2f,0.2f;GLfloat light_diffuse=0.5f,0.5f,0.2f,0.2f;GLfloat light_specular=0.5f,0.5f,0.5f,0.2f;glLightfv(GL_LIGHT0,GL_POSITION,light_position);glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);/設(shè)置材質(zhì)參數(shù)GLfloat material_ambient=0.2f,0.2f,0.2f,0.2f;GLfloat material_diffuse=0.2f,0.8f,0.4f,0.8f;GLfloat material_specular=0.2f,0.8f,0.4f,0.8f;GLfloat material_emission=0.2f,0.2f,0.2f,1.0f;GLfloat material_shiness=10.0f; glMaterialfv(GL_BACK,GL_AMBIENT,material_ambient);/FRONT_AND_BACKglMaterialfv(GL_BACK,GL_DIFFUSE,material_diffuse);glMaterialfv(GL_BACK,GL_SPECULAR,material_specular);glMaterialfv(GL_BACK,GL_EMISSION,material_emission);glMaterialfv(GL_BACK,GL_SHININESS,material_shiness);glColor3f(1.0f,0.0f,0.0f);/紅色glRotated(60.0,1.0,1.0,1.0);auxSolidTeapot(2.0);SwapBuffers(pDC-m_hDC); /雙緩沖wglMakeCurrent(NULL,NULL); 實(shí)驗(yàn)結(jié)果:實(shí)驗(yàn)四 紋理映射一:實(shí)驗(yàn)?zāi)康?. 掌握二維紋理映射方法。2. 掌握利用OpenGL編寫(xiě)繪制具有真實(shí)感效果的圖形方法。二:實(shí)驗(yàn)內(nèi)容掌握二維紋理映射方法。三:實(shí)驗(yàn)要求通過(guò)本實(shí)驗(yàn),掌握掌握二維紋理映射方法。四:實(shí)驗(yàn)程序?qū)嶒?yàn)步驟14與上述實(shí)驗(yàn)1相同5在OpenGLPlatView.cpp中OnDraw函數(shù)中添加以下代碼:wglMakeCurrent(pDC-m_hDC,m_hRC);glClearColor(1.0f,1.0f,1.0f,1.0f);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glEnable(GL_COLOR_MATERIAL);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0); glEnable(GL_AUTO_NORMAL);glEnable(GL_NORMALIZE);glEnable(GL_DEPTH_TEST);glDepthFunc(GL_LESS); glMatrixMode(GL_MODELVIEW);glLoadIdentity(); /設(shè)置光源參數(shù)GLfloat light_position=1.0f,1.0f,1.0f,0.0f;GLfloat light_ambient=0.2f,0.2f,0.2f,0.2f;GLfloat light_diffuse=0.5f,0.5f,0.2f,0.2f;GLfloat light_specular=0.5f,0.5f,0.5f,0.2f;glLightfv(GL_LIGHT0,GL_POSITION,light_position);glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);/設(shè)置材質(zhì)參數(shù)GLfloat material_ambient=0.2f,0.2f,0.2f,0.2f;GLfloat material_diffuse=0.2f,0.8f,0.4f,0.8f;GLfloat material_specular=0.2f,0.8f,0.4f,0.8f;GLfloat material_emission=0.2f,0.2f,0.2f,1.0f;GLfloat material_shiness=10.0f; glMaterialfv(GL_BACK,GL_AMBIENT,material_ambient);/FRONT_AND_BACKglMaterialfv(GL_BACK,GL_DIFFUSE,material_diffuse);glMaterialfv(GL_BACK,GL_SPECULAR,material_specular);glMaterialfv(GL_BACK,GL_EMISSION,material_emission);glMaterialfv(GL_BACK,GL_SHININESS,material_shiness);glRotated(80.0,1.0,1.0,1.0);AUX_RGBImageRec *picture=auxDIBImageLoad(_T(C:tsIcon.bmp);/(此處圖片路徑為C盤(pán)根目錄下)if(picture!=NULL)glEnable(GL_TEXTURE_2D);glPixelStorei(GL_UNPACK_ALIGNMENT,1);glTexImage2D(GL_TEXTURE_2D,/二維紋理 0,/紋理層次 3,/顏色分量個(gè)數(shù) picture-sizeX,/紋理寬度 picture-sizeY,/紋理高度 0,/紋理邊框?qū)挾龋ɑ颍?GL_RGB,/像素?cái)?shù)據(jù)格式 GL_UNSIGNED_BYTE,/像素?cái)?shù)據(jù)類型 picture-data);/存儲(chǔ)圖象數(shù)據(jù)glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);/循環(huán)glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);/GL_DECAL,GL_glBegin(GL_QUADS);glColor3f(0.0,1.0,0.0);glTexCoord2d(-2.0,-2.0);glVertex3d(-2.5,-2.5,3);glTexCoord2d(-2.0,2.0);glVertex3d(2.5,-2.5,3);glTexCoord2d(2.0,2.0);glVertex3d(2.5,2.5,3);glTexCoord2d(2.0,-2.0);glVertex3d(-2.5,2.5,3);glColor3f(1.0,1.0,0.0);glTexCoord2d(0.0,0.0);glVertex3d(-2.5,2.5,0);glTexCoord2d(0.0,1.0);glVertex3d(2.5,2.5,0);glTexCoord2d(1.0,1.0);glVertex3d(2.5,2.5,3);glTexCoord2d(1.0,0.0);glVertex3d(-2.5,2.5,3);glColor3f(1.0,0.0,1.0);glTexCoord2d(0.4,0.4);glVertex3d(-2.5,-2.5,0);glTexCoord2d(0.4,0.6);glVertex3d(-2.5,-2.5,3);glTexCoord2d(0.6,0.6);glVertex3d(-2.5,2.5,3);glTexCoord2d(0.4,0.4);glVertex3d(-2.5,2.5,0);glEnd();SwapBuffers(pDC-m_hDC); /雙緩沖wglMakeCurrent(NULL,NULL); 實(shí)驗(yàn)五 基于OpenGL的動(dòng)畫(huà)編程一:實(shí)驗(yàn)?zāi)康?. 掌握VC中的文檔視圖架構(gòu)。2. 掌握利用OpenGL編寫(xiě)動(dòng)畫(huà)效果的方法。二:實(shí)驗(yàn)內(nèi)容掌握VC中的文檔視圖架構(gòu)及動(dòng)畫(huà)程序編寫(xiě)。三:實(shí)驗(yàn)要求通過(guò)本實(shí)驗(yàn),掌握利用OpenGL編寫(xiě)動(dòng)畫(huà)效果的方法。四:實(shí)驗(yàn)程序?qū)嶒?yàn)步驟14與上述實(shí)驗(yàn)1相同5.添加Star類在Star.h中添加以下代碼#pragma once#include #include #include class Starpublic: Star(void); int m_n; int m_sign;/變形符:增加,-1:減少 double m_radiusCenter; double m_radiusMiddle; double m_radiusCorner; GLfloat m_redCenter,m_greenCenter,m_blueCenter; GLfloat m_redMiddle,m_greenMiddle,m_blueMiddle; GLfloat m_redCorner,m_greenCorner,m_blueCorner; GLdouble m_angle;/旋轉(zhuǎn)角度 GLdouble m_point263;/每個(gè)頂點(diǎn)坐標(biāo)值 GLfloat m_color263;/每個(gè)頂點(diǎn)顏色值 void mb_adjustGLfloat(GLfloat& f,GLfloat min,GLfloat max); void mb_calculatePoint(void);/計(jì)算頂點(diǎn)坐標(biāo)值 void mb_draw(void);/繪制圖形 void mb_nextFrame(void);/計(jì)算下一幀public: Star(void); 在Star.cpp中添加以下代碼: #include StdAfx.h#include Star.h/ 構(gòu)造函數(shù):初始化各個(gè)成員變量Star:Star(void) m_radiusCenter=2.0; / 中心球半徑 m_radiusMiddle=2.828; / 中間球半徑,這里2sqrt(2)2.828 m_radiusCorner=3.464; / 角上球半徑,這里2sqrt(3)3.464 m_redCenter=1.0f; / 中心球點(diǎn)顏色 m_greenCenter=0.0f; m_blueCenter=1.0f; m_redMiddle=0.0f; / 中間球點(diǎn)顏色 m_greenMiddle=1.0f; m_blueMiddle=0.0f; m_redCorner=0.0f; / 角上球點(diǎn)顏色 m_greenCorner=0.0f; m_blueCorner=1.0f; m_angle=45.0; / 旋轉(zhuǎn)角度 mb_calculatePoint( ); m_n=0; / 變形計(jì)數(shù)器 m_sign=1; / 變形符號(hào): 1: 增加; -1: 減小 / 構(gòu)造函數(shù)Star結(jié)束/ 析構(gòu)函數(shù)Star:Star(void) / 析構(gòu)函數(shù)Star結(jié)束/ 值調(diào)整函數(shù):強(qiáng)制使得參數(shù)f的值位于區(qū)間min, max內(nèi)void Star:mb_adjustGLfloat(GLfloat& f, GLfloat min, GLfloat max) if (fmax) f=max; / 函數(shù)mb_adjustGLfloat結(jié)束/ 計(jì)算頂點(diǎn)的坐標(biāo)值和顏色值void Star:mb_calculatePoint(void) int i, j; int id1 =0, 2, 6, 8, 1, 3, 5, 7; int id2 =9, 11, 14, 16, 10, 12, 13, 15; int sign1 =-1, 1, -1, 1, 0, -1, 1, 0; int sign2 = 1, 1, -1, -1, 1, 0, 0, -1; for (i=0, j=4; i4; i+, j+) / 下面0.577是“sqrt(3)/3”的近似值 m_pointid1i0=0.577*m_radiusCorner*sign1i; m_pointid1i1=0.577*m_radiusCorner*sign2i; m_pointid1i2=0.577*m_radiusCorner; m_colorid1i0=m_redCorner; m_colorid1i1=m_greenCorner; m_colorid1i2=m_blueCorner; / 下面0.707是“sqrt(2)/2”的近似值 m_pointid1j0=0.707*m_radiusMiddle*sign1j; m_pointid1j1=0.707*m_radiusMiddle*sign2j; m_pointid1j2=0.707*m_radiusMiddle; m_colorid1j0=m_redMiddle; m_colorid1j1=m_greenMiddle; m_colorid1j2=m_blueMiddle; / for循環(huán)結(jié)束 m_point40=0.0; m_point41=0.0; m_point42=m_radiusCenter; m_color40=m_redCenter; m_color41=m_greenCenter; m_color42=m_blueCenter; for (i=9; i17; i+) m_pointi2=0.0; for (i=0, j=4; i4; i+, j+) / 下面0.707是“sqrt(2)/2”的近似值 m_pointid2i0=0.707*m_radiusMiddle*sign1i; m_pointid2i1=0.707*m_radiusMiddle*sign2i; m_colorid2i0=m_redMiddle; m_colorid2i1=m_greenMiddle; m_colorid2i2=m_blueMiddle; m_pointid2j0=m_radiusCenter*sign1j; m_pointid2j1=m_radiusCenter*sign2j; m_colorid2j0=m_redCenter; m_colorid2j1=m_greenCenter; m_colorid2j2=m_blueCenter; / for循環(huán)結(jié)束 for (i=0, j=17; i9; i+, j+) m_pointj0=m_pointi0; m_pointj1=m_pointi1; m_pointj2=-m_pointi2; m_colorj0=m_colori0; m_colorj1=m_colori1; m_colorj2=m_colori2; / for循環(huán)結(jié)束 / 函數(shù)mb_calculatePoint結(jié)束/ 繪制圖形void Star:mb_draw(void) int i, j, k, m; int id38= 0, 0, 1, 4, 3, 6, 4, 8, / 上表面三角形映射關(guān)系 3, 4, 4, 5, 6, 7, 7, 5, 4, 1, 2, 2, 4, 4, 8, 4 ; int face49= 0, 1, 2, 9, 10, 11, 17, 18, 19, / 側(cè)面與表面的頂點(diǎn)映射關(guān)系 0, 3, 6, 9, 12, 14, 17, 20, 23, 6, 7, 8, 14, 15, 16, 23, 24, 25, 8, 5, 2, 16, 13, 11, 25, 22, 19 ; glBegin(GL_TRIANGLES); for (i=0; i8; i+) / 上表面 for (j=0; j3; j+) m=idji; glColor3f (m_colorm0, m_colorm1, m_colorm2); glVertex3d(m_pointm0, m_pointm1, m_pointm2); / for循環(huán)結(jié)束 for (k=0; k4; k+) / 四個(gè)側(cè)面 for (i=0; i8; i+) for (j=0; j3; j+) m=facekidji; glColor3f (m_colorm0, m_colorm1, m_colorm2); glVertex3d(m_pointm0, m_pointm1, m_pointm2); / for循環(huán)結(jié)束 for (i=0; i8; i+) / 下表面 for (j=0; jnMax) m_sign=-1; if (m_n360) m_angle=0.0; mb_calculatePoint( ); / 函數(shù)mb_nextFrame結(jié)束6在COpenGLPlatView類開(kāi)頭添加#include Star.h在view中添加一個(gè)WM_TIMER函數(shù) void COpenGLPlatView:OnTimer(UINT_PTR nIDEvent)/ TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值 COpenGLPlatDoc* pDoc=GetDocument(); ASSERT_VALID(pDoc); if(!pDoc) return; pDoc-m_star.mb_nextFrame(); Invalidate();CView:OnTimer(nIDEvent);在COpenGLPlatDoc類中添加m_star變量:public:Star m_star;7.在view中的OnCreate函數(shù)中添加時(shí)間觸發(fā):int COpenGLPlatView:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CView:OnCreate(lpCreateStruct) = -1)return -1;/ TODO: 在此添加您專用的創(chuàng)建代碼. SetTimer(1,33,NULL);return 0;8.在view中的OnDestroy函數(shù)中添加代碼:KillTimer(1);9.在OpenGLPlatView.cpp中OnDraw函數(shù)中添加以下代碼void CMy4View:OnDraw(CDC* pDC)CMy4Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;wglMakeCurrent(pDC-m_hDC,m_hRC);glClearColor(1.0f,1.0f,1.0f,1.0f);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glEnable(GL_COLOR_MATERIAL);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0); glEnable(GL_AUTO_NORMAL);glEnable(GL_NORMALIZE);glEnable(GL_DEPTH_TEST);glDepthFunc(GL_LESS); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); /設(shè)置光源參數(shù)GLfloat light_position=1.0f,1.0f,1.0f,0.0f;GLfloat light_ambient=0.2f,0.2f,0.2f,0.2f;GLfloat light_diffuse=0.5f,0.5f,0.2f,0.2f;GLfloat light_specular=0.5f,0.5f,0.5f,0.2f;glLightfv(GL_LIGHT0,GL_POSITION,light_p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年初升高暑期數(shù)學(xué)講義專題13 充分必要條件、全稱量詞與存在量詞(重難點(diǎn)突破)(含答案)
- 2003年江蘇省南通市中考數(shù)學(xué)試題【含答案、解析】
- 義烏市2025年初中畢業(yè)生語(yǔ)文學(xué)業(yè)水平考試調(diào)研試卷(5月二模)
- AutoCAD三維圖形準(zhǔn)備30課件
- 考研復(fù)習(xí)-風(fēng)景園林基礎(chǔ)考研試題附參考答案詳解(突破訓(xùn)練)
- 風(fēng)景園林基礎(chǔ)考研資料試題及參考答案詳解(培優(yōu)b卷)
- 《風(fēng)景園林招投標(biāo)與概預(yù)算》試題A帶答案詳解(基礎(chǔ)題)
- 2025-2026年高校教師資格證之《高等教育法規(guī)》通關(guān)題庫(kù)附答案詳解(模擬題)
- 2024年山東華興機(jī)械集團(tuán)有限責(zé)任公司人員招聘筆試備考題庫(kù)含答案詳解(黃金題型)
- 2025年K2學(xué)校STEM課程實(shí)施與跨學(xué)科知識(shí)整合研究報(bào)告
- 黃岡市 2025年春季九年級(jí)調(diào)研考試物理試題
- 新生兒休克的評(píng)估及護(hù)理
- 《手鏈》(教案)-二年級(jí)下冊(cè)勞動(dòng)蘇科版
- 石油鉆井動(dòng)火作業(yè)的風(fēng)險(xiǎn)識(shí)別及安全措施
- 環(huán)網(wǎng)柜維修施工方案
- INS+2024指南更新要點(diǎn)解讀
- 2025年-四川省安全員《A證》考試題庫(kù)及答案
- HSE管理體系文件
- 鎖骨骨折臨床路徑管理
- 運(yùn)維管理培訓(xùn)
- 2024年四川樂(lè)山中考滿分作文《有一束光照亮了我》
評(píng)論
0/150
提交評(píng)論