虚拟现实与系统仿真实验指导书49399.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《虚拟现实与系统仿真实验指导书49399.docx》由会员分享,可在线阅读,更多相关《虚拟现实与系统仿真实验指导书49399.docx(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、虚拟现实与系统统仿真实验指导书20132实验一 基于MMFC的基本本OpenGGL应用程序序生成一:实验目的1. 熟悉VCC+20005集成开发发环境;2. 熟悉基本本MFC应用用程序的生成成;3. 掌握基于于MFC的基基本OpennGL应用程程序生成。二:实验内容1. 建立基于于MFC的基基本OpennGL应用程程序;2. 配置应用用程序,添加加OpenGGL链接库文文件;3. 建立OppenGL的的基本环境。三:实验背景知知识OpenGL是是一种图形显显示软件工具具包,它为图图形硬件提供供软件接口。OOpenGLL为计算机动动画提供由图图形生成图像像帧的工具。MFC提供的图形用户界面程序设
2、计技术可以编写人机交互程序,OpenGL技术可以进行各种图形绘制。四:实验步骤1. 文件-新建-项目 选择MFCC应用程序 输入名称OOpenGLLPlat2. 右击项目名,选选择属性,再再选择链接器器中的输入选选项,附加依依赖项:oppengl332.libb; glu332.libb ;glauxx.lib3选择类视图图模式,右击击View,再添加变量和头文件件或直接在Vieew头文件中中添加变量:protectted:HGLRC m_hRCC;添加包含OpeenGL头文文件的语句:在COpenGGLPlattView.cpp中添加代码#includde #includde #includ
3、de 4右击属性 消息按钮钮 选择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.dwF
4、laags=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
5、0;右击属性 消消息按钮 选择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_h
6、DCC,m_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) / 把 ”/*pDC
7、C*/” 改成 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)
8、;glEnabble(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);SwapBufffer
9、s(pDC-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;
11、GLUU_SILHHOUETTTE;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);/平面圆盘(,内内圆半径,外外圆半径,扇扇形瓣数,环环的个数)/
12、.gluParttialDiisk(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);
13、/auxWiireBoxx(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);/八八面体
14、/auxWiireTettraheddron(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_C
16、OOLOR_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(); /设设置光源参数数GLflo
17、aat ligght_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);glLighh
18、tfv(GGL_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
19、,0.2f,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);glMa
20、teerialffv(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编写绘制制具有真实感感效果的图形形方法。二:实验内容掌握二维纹理映映射方法。三:实验要求通过本实验
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 虚拟现实 系统 仿真 实验 指导书 49399
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内