《虚拟现实与系统仿真》实验指导书22_第1页
《虚拟现实与系统仿真》实验指导书22_第2页
《虚拟现实与系统仿真》实验指导书22_第3页
《虚拟现实与系统仿真》实验指导书22_第4页
《虚拟现实与系统仿真》实验指导书22_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、虚拟现实与系统统仿真实验指导书20132实验一 基于MMFC的基本本OpenGGL应用程序序生成一:实验目的1. 熟悉VCC+20005集成开发发环境;2. 熟悉基本本MFC应用用程序的生成成;3. 掌握基于于MFC的基基本OpennGL应用程程序生成。二:实验内容1. 建立基于于MFC的基基本OpennGL应用程程序;2. 配置应用用程序,添加加OpenGGL链接库文文件;3. 建立OppenGL的的基本环境。三:实验背景知知识OpenGL是是一种图形显显示软件工具具包,它为图图形硬件提供供软件接口。OOpenGLL为计算机动动画提供由图图形生成图像像帧的工具。MFC提供的图形用户界面程序设

2、计技术可以编写人机交互程序,OpenGL技术可以进行各种图形绘制。四:实验步骤文件-新建-项目 选择MFCC应用程序 输入名称OOpenGLLPlat右击项目名,选选择属性,再再选择链接器器中的输入选选项,附加依依赖项:oppengl332.libb; glu332.libb ;glauxx.lib3选择类视图图模式,右击击View,再添加变量和头文件件或直接在Vieew头文件中中添加变量:protectted:HGLRC m_hRCC;添加包含OpeenGL头文文件的语句:在COpenGGLPlattView.cpp中添加代码#includde #includde #includde 4右击

3、属性 消息按钮钮 选择WWM_CREEATE 添添加在int COOpenGLLPlatVView:OnCreeate(LLPCREAATESTRRUCT llpCreaateStrruct)函函数中添加代代码/添加新的代代码开始CClienttDC dcc(thiss); PIXEELFORMMATDESSCRIPTTOR pffd; memsset(&ppfd,0,sizeoof(PIXXELFORRMATDEESCRIPPTOR); pfd.nSizee=sizeeof(PIIXELFOORMATDDESCRIIPTOR); pfd.nVerssion=11; pfd.dwFlaags=

4、PFFD_DRAAW_TO_WINDOOW| PFD_SSUPPORRT_OPEENGL| PPFD_DOOUBLEBBUFFERR; pfd.iPixeelTypee=PFD_TYPE_RGBA; pfd.cColoorBitss=24; pfd.cDeptthBitss=32; int pixellFormaat=ChooosePiixelFoormat(dc.m_hDC,&pfd); SetPPixelFFormatt(dc.mm_hDC,pixellFormaat,&pffd); m_hRRC=wgllCreatteConttext(ddc.m_hhDC);returnn 0;右击属性

5、 消消息按钮 选择WM_DESTRROY 添加加void COOpenGLLPlatVView:OnDesstroy()函数中添添加代码 /添加加新的代码开开始wglMakeeCurreent(NULL,NULL);wglDelleteCoontextt(m_hRCC);m_hRC=NULL;右击属性 消消息按钮 选择WM_SIZE 添加void COOpenGLLPlatVView:OnSizze(UINT nTypee, int cx, int cy) 函数中添加加代码 /添加加新的代码开开始CClienttDC dc(this);wglMakkeCurrrent(dc.m_hDCC,m_

6、hRCC); glMMatrixxMode(GL_PRROJECTTION);glLoaddIdenttity();doublee d=10;doublee n=100;glOrthho(-cx/n,cx/n,-cy/n,cy/n,-d,d);glMatrrixModde(GL_MOODELVIIEW);glViewwport(0,0,ccx,cy);wglMakkeCurrrent(NULL,NULL);5.在OpennGLPlaatVieww.cpp中中OnDraaw函数中添添加以下代码码:void CMMy1Vieew:OnDrraw(CDC* pDC) / 把 ”/*pDCC*/” 改

7、成 ppDCCOpenGGLPlattDoc* pDocc = GettDocumment();ASSERTT_VALIID(pDoc);if (!ppDoc)returrn;/ TODDO: 在此此处为本机数数据添加绘制制代码wglMakkeCurrrent(pDC-m_hDDC,m_hRCC);glCleaarColoor(1.0f,1.0f,1.0f,1.0f); glCClearDDepth(1.0);glCleaar(GL_COOLOR_BBUFFERR_BIT|GL_DEEPTH_BBUFFERR_BIT);glEnabble(GL_COOLOR_MMATERIIAL);glEna

8、bble(GL_LIIGHTINNG);glEnabble(GL_LIIGHT0); glEEnablee(GL_AUUTO_NOORMAL);glEnabble(GL_NOORMALIIZE);glEnabble(GL_DEEPTH_TTEST);glDeptthFuncc(GL_LEESS);glMatrrixModde(GL_MOODELVIIEW);glLoaddIdenttity();glColoor3f(1.0f,0.0f,0.0f);glRotaated(660.0,11.0,1.0,1.00); /茶壶auxWirreTeappot(3.0);SwapBufffers(pDC-

9、m_hDDC);wglMakkeCurrrent(NULL,NULL);五:实验结果 实验二OpennGL基本图图形元素和模模型变换一:实验目的1. 掌握二次次曲面的绘制制函数及其应应用方法。2. 掌握基本本实体模型的的绘制函数及及其应用方法法。二:实验内容1. 学习二次次曲面的绘制制函数及其应应用方法。2. 学习基本本实体模型的的绘制函数及及其应用方法法。三:实验背景知知识OpenGL提提供了二次曲曲面和基本实实体模型的绘绘制函数及其其应用方法。这这些二次曲面面和基本实体体模型在OppenGL内内部实现中实实际上也是将将它们离散分分割成为大量量的多边形,然然后通过绘制制多边形的方方法实现对这

10、这些二次曲面面和基本实体体模型的绘制制。四:实验程序 实验步骤144与上述实验验1相同5在OpenGGLPlattView.cpp中OOnDraww函数中添加加以下代码:wglMakeeCurreent(pDC-m_hDDC,m_hRCC);glMatriixModee(GL_MOODELVIIEW); /二次次曲面glColorr3f(1.0f,0.0f,0.0f);GLUquaddric* qd=glluNewQQuadriic();/创建二次次曲面对象gluQuaddricDrrawStyyle(qdd,GLU_FILL);/设置二次次曲面对象绘绘制模式GLLU_LINNE;GLUU_S

11、ILHHOUETTTE;GLUU_POINNTglLoadIIdentiity();glRotatted(-1105.0,1.0,00.0,0.0);glTransslatedd(-6.00,0.0,-2.0);gluCyliinder(qd,2.0,1.00,4.0,30,4);/(圆台,下下底面半径,上上底面半径,圆圆台高度,绕绕z轴分割瓣数数,绕z轴方向层数数)glLoadIIdentiity();glTransslatedd(-6.00,0.0,-2.0);gluDiskk(qd,11.0,2.0,30,4);/平面圆盘(,内内圆半径,外外圆半径,扇扇形瓣数,环环的个数)/.gluPa

12、rttialDiisk(qdd,1.0,2.0,110,4,00,75);/拱状图形形(,内圆半半径,外圆半半径,扇形瓣瓣数,环的个个数,起始角角,图形张开开的角度)/.gluSpheere(qdd,2.0,30,6);/球(,球球的半径,分分割的瓣数,分分割的层次)auxSoliidTetrrahedrron(4.0);/实体模型auuxWireeTeapoot();aauxSollidTeaapot();/auxWiireSphhere(33.0);aauxSollidSphhere(33.0);/auxWiireCubbe(4.00);auxxSoliddCube(4.0);/auxWi

13、ireBoxx(3.0,4.0,55.0);aauxSollidBoxx(3.0,4.0,55.0);/auxWiireTorrus(1.0,3.00);/圆圆环auxSSolidTTorus(1.0,33.0);/auxWiireCyllinderr(2.0,4.0);auxSoolidCyylindeer(2.00,4.0);/auxWiireIcoosaheddron(44.0);aauxSollidIcoosaheddron(44.0);/二十面体体 /auxWiireOcttahedrron(4.0);auuxSoliidOctaahedroon(4.00);/八八面体 /auxWi

14、ireTettraheddron(44.0);aauxSollidTettraheddron(44.0);/四面体 /auxWiireDoddecaheedron(4.0);auxSoolidDoodecahhedronn(4.0);/十二二面体 /auxWiireConne(2.00,4.0);auxSSolidCCone(22.0,4.0);/圆锥体 SwapBBufferrs(pDC-m_hDDC); /双缓冲冲wglMakkeCurrrent(NULL,NULL); 实验三 光照与与材质一:实验目的:1. 掌握利用用OpenGGL编写绘制制具有真实感感效果的图形形方法。2. 掌握添加加

15、光源和设置置颜色材料属属性的方法。二:实验内容:1. 掌握添加加光源的实现现方法。2. 掌握设置置颜色和材料料属性的方法法。三:实验要求通过本实验,掌掌握添加光源源和设置颜色色材料属性的的方法,利用用OpenGGL编写绘制制具有真实感感效果的图形形。四:实验程序实验步骤144与上述实验验1相同5在OpenGGLPlattView.cpp中OOnDraww函数中添加加以下代码:wglMakeeCurreent(pDC-m_hDDC,m_hRCC);glClearrColorr(1.0f,1.0f,1.0f,1.0f);glClearrDepthh(1.0);glClearr(GL_COOLOR_

16、BBUFFERR_BIT|GL_DEEPTH_BBUFFERR_BIT);glEnablle(GL_COOLOR_MMATERIIAL);glEnablle(GL_LIIGHTINNG);glEnablle(GL_LIIGHT0);glEnablle(GL_AUUTO_NOORMAL);glEnablle(GL_NOORMALIIZE);glEnablle(GL_DEEPTH_TTEST);glDepthhFunc(GL_LEESS);/设置模型变变换矩阵glMatrrixModde(GL_MODELLVIEW);glLoaddIdenttity(); /设设置光源参数数GLfloaat li

17、gght_poositioon=1.0f,1.0f,1.0f,0.0f;GLfloaat ligght_ammbientt=00.2f,0.2f,0.2f,0.2f;GLfloaat ligght_diiffusee=00.5f,0.5f,0.2f,0.2f;GLfloaat ligght_sppeculaar=0.5f,0.5f,0.5f,0.2f;glLighhtfv(GGL_LIGGHT0,GGL_POSSITIONN,lighht_possitionn);glLighhtfv(GGL_LIGGHT0,GGL_AMBBIENT,lightt_ambiient);glLighhtfv(GG

18、L_LIGGHT0,GGL_DIFFFUSE,lightt_difffuse);glLighhtfv(GGL_LIGGHT0,GGL_SPEECULARR,lighht_speecularr);/设置材质质参数GLfloaat matteriall_ambiient=0.22f,0.2f,0.2f,0.2f;GLfloaat matteriall_difffuse=0.22f,0.8f,0.4f,0.8f;GLfloaat matteriall_speccular=0.2f,0.8f,0.4f,0.8f;GLfloaat matteriall_emisssion=0.2f,0.2f,0.2f,

19、1.0f;GLfloaat matteriall_shinness=10.0f; gllMaterrialfvv(GL_BBACK,GGL_AMBBIENT,materrial_aambiennt);/FRONTT_AND_BACKglMateerialffv(GL_BACK,GL_DIIFFUSEE,mateerial_diffuuse);glMateerialffv(GL_BACK,GL_SPPECULAAR,matteriall_speccular);glMateerialffv(GL_BACK,GL_EMMISSIOON,matteriall_emisssion);glMateeria

20、lffv(GL_BACK,GL_SHHININEESS,maateriaal_shiiness);glColoor3f(1.0f,0.0f,0.0f);/红色glRotaated(660.0,11.0,1.0,1.00);auxSoliidTeappot(2.0);SwapBuufferss(pDC-m_hDDC); /双缓冲冲wglMakkeCurrrent(NULL,NULL); 实验结果:实验四 纹理映映射一:实验目的1. 掌握二维维纹理映射方方法。2. 掌握利用用OpenGGL编写绘制制具有真实感感效果的图形形方法。二:实验内容掌握二维纹理映映射方法。三:实验要求通过本实验,掌掌握掌握

21、二维维纹理映射方方法。四:实验程序实验步骤144与上述实验验1相同5在OpenGGLPlattView.cpp中OOnDraww函数中添加加以下代码:wglMakeeCurreent(pDC-m_hDDC,m_hRCC);glCleaarColoor(1.0f,1.0f,1.0f,1.0f);glCleaar(GL_COOLOR_BBUFFERR_BIT|GL_DEEPTH_BBUFFERR_BIT);glEnabble(GL_COOLOR_MMATERIIAL);glEnabble(GL_LIIGHTINNG);glEnabble(GL_LIIGHT0); glEEnablee(GL_AUU

22、TO_NOORMAL);glEnabble(GL_NOORMALIIZE);glEnabble(GL_DEEPTH_TTEST);glDeptthFuncc(GL_LEESS); glMMatrixxMode(GL_MOODELVIIEW);glLoaddIdenttity(); /设设置光源参数数GLfloaat lightt_posiition=1.0f,1.0f,1.0f,0.0f;GLfloaat lightt_ambiient=0.22f,0.2f,0.2f,0.2f;GLfloaat lightt_difffuse=0.55f,0.5f,0.2f,0.2f;GLfloaat lig

23、htt_speccular=0.5f,0.5f,0.5f,0.2f;glLighhtfv(GL_LIIGHT0,GL_POOSITIOON,lightt_posiition);glLighhtfv(GL_LIIGHT0,GL_AMMBIENTT,lightt_ambiient);glLighhtfv(GL_LIIGHT0,GL_DIIFFUSEE,lightt_difffuse);glLighhtfv(GL_LIIGHT0,GL_SPPECULAAR,lightt_speccular);/设置材质质参数GLfloaat materrial_aambiennt=0.2f,0.2f,0.2f,0.

24、2f;GLfloaat materrial_ddiffusse=0.2f,0.8f,0.4f,0.8f;GLfloaat materrial_sspecullar=0.2ff,0.8f,0.4f,0.8f;GLfloaat materrial_eemissiion=0.2ff,0.2f,0.2f,1.0f;GLfloaat materrial_sshinesss=10.0ff; gllMaterrialfvv(GL_BAACK,GL_AMMBIENTT,materrial_aambiennt);/FRRONT_AAND_BAACKglMateerialffv(GL_BAACK,GL_DIIFF

25、USEE,materrial_ddiffusse);glMateerialffv(GL_BAACK,GL_SPPECULAAR,materrial_sspecullar);glMateerialffv(GL_BAACK,GL_EMMISSIOON,materrial_eemissiion);glMateerialffv(GL_BAACK,GL_SHHININEESS,materrial_sshinesss);glRotaated(880.0,11.0,1.0,1.00);AUX_RGGBImaggeRec *pictture=auxDIIBImaggeLoadd(_T(C:tsIcoon.bm

26、pp);/(此处图片路路径为C盘根根目录下)if(piccture!=NULLL)glEnaable(GL_TEEXTUREE_2D);glPixxelStoorei(GL_UNNPACK_ALIGNNMENT,1);glTexxImagee2D(GL_TEEXTUREE_2D,/二维纹理理 0,/纹理层次次 3,/颜色分量量个数 pictuure-sizeeX,/纹理宽度度 pictuure-sizeeY,/纹理高度度 0,/纹理边框框宽度(或) GL_RGGB,/像素数据据格式 GL_UNNSIGNEED_BYTTE,/像素数据据类型 pictuure-dataa);/存储图象象数据glT

27、exxParammeterii(GL_TEEXTUREE_2D,GL_TEEXTUREE_WRAPP_S,GL_REEPEAT);/循环glTexxParammeterii(GL_TEEXTUREE_2D,GL_TEEXTUREE_WRAPP_T,GL_REEPEAT);glTexxParammeterii(GL_TEEXTUREE_2D,GL_TEEXTUREE_MAG_FILTEER,GL_NEEARESTT);glTexxParammeterii(GL_TEEXTUREE_2D,GL_TEEXTUREE_MIN_FILTEER,GL_NEEARESTT);glTexxEnvi(GL_TE

28、EXTUREE_ENV,GL_TEEXTUREE_ENV_MODE,GL_MOODULATTE);/GLL_DECAAL,GL_glBegiin(GL_QUUADS);glColoor3f(0.00,1.0,0.0);glTexCCoord22d(-2.0,-2.0);gllVerteex3d(-2.5,-2.5,33);glTexCCoord22d(-2.0,2.00);glVVertexx3d(2.5,-2.5,3);glTexCCoord22d(2.00,2.0);glVeertex33d(2.55,2.5,3);glTexCCoord22d(2.00,-2.00);glVVertexx

29、3d(-22.5,2.5,3);glColoor3f(1.00,1.0,0.0);glTexCCoord22d(0.00,0.0);glVeertex33d(-2.5,2.55,0);glTexCCoord22d(0.00,1.0);glVeertex33d(2.55,2.5,0);glTexCCoord22d(1.00,1.0);glVeertex33d(2.55,2.5,3);glTexCCoord22d(1.00,0.0);glVeertex33d(-2.5,2.55,3);glColoor3f(1.00,0.0,1.0);glTexCCoord22d(0.44,0.4);glVeert

30、ex33d(-2.5,-2.5,0);glTexCCoord22d(0.44,0.6);glVeertex33d(-2.5,-2.5,3);glTexCCoord22d(0.66,0.6);glVeertex33d(-2.5,2.55,3);glTexCCoord22d(0.44,0.4);glVeertex33d(-2.5,2.55,0);glEnd();SwapBuufferss(pDC-m_hDDC); /双缓冲冲wglMakkeCurrrent(NULL,NULL); 实验五 基于OOpenGLL的动画编程程一:实验目的1. 掌握VCC中的文档视视图架构。2. 掌握利用用OpenGGL

31、编写动画画效果的方法法。二:实验内容掌握VC中的文文档视图架构构及动画程序序编写。三:实验要求通过本实验,掌掌握利用OppenGL编编写动画效果果的方法。四:实验程序实验步骤144与上述实验验1相同5.添加Staar类在Star.hh中添加以下下代码#pragmaa once#includde #includde #includde class SStarpublic: Star(void); innt m_nn; innt m_ssign;/变形符:增加,-11:减少 doouble m_raddiusCeenter; doouble m_raddiusMiiddle; doouble m_

32、raddiusCoorner; GLLfloatt m_reedCentter,m_greennCenteer,m_bblueCeenter; GLLfloatt m_reedMidddle,m_greennMiddlle,m_bblueMiiddle; GLLfloatt m_reedCornner,m_greennCorneer,m_bblueCoorner; GLLdoublle m_aangle;/旋转角度度 GLLdoublle m_ppoint2633;/每个顶点点坐标值 GLLfloatt m_coolor2263;/每个顶点点颜色值 vooid mbb_adjuustGLffl

33、oat(GLflooat& ff,GLflloat mmin,GLLfloatt max); vooid mbb_calcculateePointt(voidd);/计算顶点点坐标值 vooid mbb_draww(voidd);/绘制图形形 vooid mbb_nexttFramee(voidd);/计算下一一帧public: Staar(voiid); 在Star.ccpp中添加加以下代码: #incluude SStdAfxx.h#includde Sttar.h/ 构造函数数:初始化各各个成员变量量Star:SStar(vvoid) m_rradiussCenteer=2.00; /

34、中心球球半径 m_rradiussMiddlle=2.8828; / 中间球球半径,这里里2sqrt(2)2.8288 m_rradiussCorneer=3.4464; / 角上球球半径,这里里2sqrt(3)3.4644 m_rredCennter=11.0f; / 中心球球点颜色 m_ggreenCCenterr=0.0ff; m_bblueCeenter=1.0f; m_rredMidddle=00.0f; / 中间球球点颜色 m_ggreenMMiddlee=1.0ff; m_bblueMiiddle=0.0f; m_rredCorrner=00.0f; / 角上球球点颜色 m_gg

35、reenCCornerr=0.0ff; m_bblueCoorner=1.0f; m_aangle=45.0; / 旋转角角度 mb_calcuulatePPoint( ); m_nn=0; / 变形计数器器 m_ssign=11; / 变形符号: 1: 增增加; -11: 减小 / 构造造函数Staar结束/ 析构函数数Star:Star(void) / 析构构函数Sttar结束/ 值调整函函数:强制使使得参数f的的值位于区间间min, max内void Sttar:mmb_adjjustGLLfloatt(GLflloat& f, GLLfloatt min, GLflloat mmax)

36、 if (fmaax) f=maax; / 函数数mb_addjustGGLfloaat结束/ 计算顶点点的坐标值和和颜色值void Sttar:mmb_callculattePoinnt(voiid) intt i, jj; intt id1 =00, 2, 6, 8, 1, 33, 5, 7; intt id2 =99, 11, 14, 16, 110, 122, 13, 15; intt signn1 =-1, 1, -1, 11, 0, -1, 1, 0; intt signn2 = 1, 1, -1, -11, 1, 0, 0, -11; forr (i=00, j=44; i44;

37、 i+, j+) / 下面00.577是是“sqrt(3)/3”的近似值 m_poointiid1i0=0.5777*m_raadiusCCornerr*signn1i; m_poointiid1i1=0.5777*m_raadiusCCornerr*signn2i; m_poointiid1i2=0.5777*m_raadiusCCornerr; m_cooloriid1i0=m_reddCorneer; m_cooloriid1i1=m_greeenCorrner; m_cooloriid1i2=m_bluueCornner; / 下下面0.7007是“sqrt(2)/2”的近似值 m_p

38、oointiid1j0=0.7077*m_raadiusMMiddlee*signn1j; m_poointiid1j1=0.7077*m_raadiusMMiddlee*signn2j; m_poointiid1j2=0.7077*m_raadiusMMiddlee; m_cooloriid1j0=m_reddMiddlle; m_cooloriid1j1=m_greeenMidddle; m_cooloriid1j2=m_bluueMidddle; / forr循环结束 m_ppoint40=0.0; m_ppoint41=0.0; m_ppoint42=m_raadiusCCenterr

39、; m_ccolor40=m_reedCentter; m_ccolor41=m_grreenCeenter; m_ccolor42=m_bllueCennter; forr (i=99; i117; i+) m_poointii2=0.0; forr (i=00, j=44; i44; i+, j+) / 下面00.707是是“sqrt(2)/2”的近似值 m_poointiid2i0=0.7077*m_raadiusMMiddlee*signn1i; m_poointiid2i1=0.7077*m_raadiusMMiddlee*signn2i; m_cooloriid2i0=m_redd

40、Middlle; m_cooloriid2i1=m_greeenMidddle; m_cooloriid2i2=m_bluueMidddle; m_poointiid2j0=m_raddiusCeenter*sign11j; m_poointiid2j1=m_raddiusCeenter*sign22j; m_cooloriid2j0=m_reddCenteer; m_cooloriid2j1=m_greeenCennter; m_cooloriid2j2=m_bluueCentter; / forr循环结束 forr (i=00, j=117; i9; i+, j+) m_poointjj0

41、=m_poiinti0; m_poointjj1=m_poiinti1; m_poointjj2=-m_poointii2; m_coolorjj0=m_collori0; m_coolorjj1=m_collori1; m_coolorjj2=m_collori2; / forr循环结束 / 函数数mb_caalculaatePoiint结束/ 绘制图形形void Sttar:mmb_draaw(voiid) intt i, jj, k, m; intt id338= 0, 0, 1, 44, 3, 6, 4, 8, / 上表表面三角形映映射关系 3, 4, 4, 55, 6, 7, 7,

42、5, 4, 1, 2, 22, 4, 4, 8, 4 ; intt facee499= 0, 1, 2, 9, 100, 11, 17, 18, 119, / 侧面与与表面的顶点点映射关系 0, 3, 6, 9, 122, 14, 17, 20, 223, 6, 7, 8, 114, 155, 16, 23, 24, 225, 8, 5, 2, 116, 133, 11, 25, 22, 119 ; glBBegin(GL_TRRIANGLLES); for (i=0; i8; i+) / 上上表面 for (j=0; j3; j+) m=idji; glCollor3f (m_colorrm

43、00, m_colorrm11, m_colorrm22); glVerrtex3dd(m_poointmm0, m_poointmm1, m_poointmm2); / for循循环结束 for (k=0; k4; k+) / 四四个侧面 for (i=0; i8; i+) for (j=0; j3; j+) m=faccekidji; glCollor3f (m_colorrm00, m_colorrm11, m_colorrm22); glVerrtex3dd(m_poointmm0, m_poointmm1, m_poointmm2); / for循循环结束 for (i=0; i8;

44、 i+) / 下下表面 for (j=0; jnMax) m_siign=-11; if (m_n3360) m_anngle=00.0; mb_calcuulatePPoint( ); / 函数数mb_neextFraame结束6在COpeenGLPllatVieew类开头添添加#includde Starr.h在view中添添加一个WMM_TIMEER函数 voidd COpeenGLPllatVieew:OnnTimerr(UINTT_PTR nIDEvvent)/ TODDO: 在此此添加消息处处理程序代码码和/或调用默认认值 COppenGLPPlatDooc* pDDoc=Geet

45、Docuument(); ASSSERT_VVALID(pDoc); if(!pDocc) retturn; pDooc-m_star.mb_neextFraame(); Invvalidaate();CView:OnTiimer(nnIDEveent);在COpenGGLPlattDoc类中中添加m_sstar变量量:public:Star m_sstar;7.在vieww中的OnCCreatee函数中添加加时间触发:int COppenGLPPlatViiew:OnCrreate(LPCREEATESTTRUCT lpCreeateSttruct)if (CVView:OnCreeate(

46、lpCreeateSttruct) = -1)returrn -1;/ TODDO: 在在此添加您专专用的创建代代码. SeetTimeer(1,333,NULLL);returnn 0;8.在vieww中的OnDDestrooy函数中添添加代码:KillTimmer(1);9.在OpennGLPlaatVieww.cpp中中OnDraaw函数中添添加以下代码码void CMMy4Vieew:OnDrraw(CDC* pDC)CMy4Dooc* pDocc = GettDocumment();ASSERTT_VALIID(pDoc);if (!pDoc)returrn;wglMakkeCurr

47、rent(pDC-m_hDDC,m_hRCC);glCleaarColoor(1.0f,1.0f,1.0f,1.0f);glCleaar(GL_COOLOR_BBUFFERR_BIT|GL_DEEPTH_BBUFFERR_BIT);glEnabble(GL_COOLOR_MMATERIIAL);glEnabble(GL_LIIGHTINNG);glEnabble(GL_LIIGHT0); glEEnablee(GL_AUUTO_NOORMAL);glEnabble(GL_NOORMALIIZE);glEnabble(GL_DEEPTH_TTEST);glDeptthFuncc(GL_LEESS

48、); glMMatrixxMode(GL_MOODELVIIEW); glLLoadIddentitty(); /设设置光源参数数GLfloaat lightt_posiition=1.0f,1.0f,1.0f,0.0f;GLfloaat lightt_ambiient=0.22f,0.2f,0.2f,0.2f;GLfloaat lightt_difffuse=0.55f,0.5f,0.2f,0.2f;GLfloaat lightt_speccular=0.5f,0.5f,0.5f,0.2f;glLighhtfv(GL_LIIGHT0,GL_POOSITIOON,lightt_posiition);glLighhtfv(GL_LIIGHT0,GL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论