虚拟现实与系统仿真实验指导书.docx
《虚拟现实与系统仿真实验指导书.docx》由会员分享,可在线阅读,更多相关《虚拟现实与系统仿真实验指导书.docx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、虚拟现实与系统仿真实验指导书20132实验一 基于MFC的基本OpenGL应用程序生成一:实验目的1. 熟悉VC+2005集成开发环境;2. 熟悉基本MFC应用程序的生成;3. 掌握基于MFC的基本OpenGL应用程序生成。二:实验内容1. 建立基于MFC的基本OpenGL应用程序;2. 配置应用程序,添加OpenGL链接库文件;3. 建立OpenGL的基本环境。三:实验背景知识OpenGL是一种图形显示软件工具包,它为图形硬件提供软件接口。OpenGL为计算机动画提供由图形生成图像帧的工具。MFC提供的图形用户界面程序设计技术可以编写人机交互程序,OpenGL技术可以进行各种图形绘制。四:实
2、验步骤1. 文件-新建-项目 选择MFC应用程序 输入名称OpenGLPlat2. 右击项目名,选择属性,再选择链接器中的输入选项,附加依赖项:opengl32.lib; glu32.lib ;glaux.lib3选择类视图模式,右击View,再添加变量和头文件或直接在View头文件中添加变量:protected:HGLRC m_hRC;添加包含OpenGL头文件的语句:在COpenGLPlatView.cpp中添加代码#include #include #include 4右击属性 消息按钮 选择WM_CREATE 添加在int COpenGLPlatView:OnCreate(LPCREA
3、TESTRUCT lpCreateStruct)函数中添加代码/添加新的代码开始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.cColorB
4、its=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()函数中添加代码 /添加新的代码开始wglMakeCurrent(NULL,NULL);wglDeleteContext(m_hRC);m_hRC=NULL;右击属
5、性 消息按钮 选择WM_SIZE 添加void COpenGLPlatView:OnSize(UINT nType, int cx, int cy) 函数中添加代码 /添加新的代码开始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);wg
6、lMakeCurrent(NULL,NULL);5.在OpenGLPlatView.cpp中OnDraw函数中添加以下代码:void CMy1View:OnDraw(CDC* pDC) / 把 ”/*pDC*/” 改成 pDCCOpenGLPlatDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;/ TODO: 在此处为本机数据添加绘制代码wglMakeCurrent(pDC-m_hDC,m_hRC);glClearColor(1.0f,1.0f,1.0f,1.0f); glClearDepth(1.0);glClear
7、(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
8、.0); /茶壶auxWireTeapot(3.0);SwapBuffers(pDC-m_hDC);wglMakeCurrent(NULL,NULL);五:实验结果 实验二OpenGL基本图形元素和模型变换一:实验目的1. 掌握二次曲面的绘制函数及其应用方法。2. 掌握基本实体模型的绘制函数及其应用方法。二:实验内容1. 学习二次曲面的绘制函数及其应用方法。2. 学习基本实体模型的绘制函数及其应用方法。三:实验背景知识OpenGL提供了二次曲面和基本实体模型的绘制函数及其应用方法。这些二次曲面和基本实体模型在OpenGL内部实现中实际上也是将它们离散分割成为大量的多边形,然后通过绘制多边形的方
9、法实现对这些二次曲面和基本实体模型的绘制。四:实验程序 实验步骤14与上述实验1相同5在OpenGLPlatView.cpp中OnDraw函数中添加以下代码:wglMakeCurrent(pDC-m_hDC,m_hRC);glMatrixMode(GL_MODELVIEW); /二次曲面glColor3f(1.0f,0.0f,0.0f);GLUquadric* qd=gluNewQuadric();/创建二次曲面对象gluQuadricDrawStyle(qd,GLU_FILL);/设置二次曲面对象绘制模式GLU_LINE;GLU_SILHOUETTE;GLU_POINTglLoadIdent
10、ity();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);/(圆台,下底面半径,上底面半径,圆台高度,绕z轴分割瓣数,绕z轴方向层数)glLoadIdentity();glTranslated(-6.0,0.0,-2.0);gluDisk(qd,1.0,2.0,30,4);/平面圆盘(,内圆半径,外圆半径,扇形瓣数,环的个数)/.gluPartialDisk(qd,1.0,2.0,10,4,0,75);/拱状图形(,内圆半径,外圆半径,扇形瓣数,环的个数,起始
11、角,图形张开的角度)/.gluSphere(qd,2.0,30,6);/球(,球的半径,分割的瓣数,分割的层次)auxSolidTetrahedron(4.0);/实体模型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);/圆环auxSolidTorus(1.0,3.0);/auxWi
12、reCylinder(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);auxSolidCo
13、ne(2.0,4.0);/圆锥体 SwapBuffers(pDC-m_hDC); /双缓冲wglMakeCurrent(NULL,NULL); 实验三 光照与材质一:实验目的:1. 掌握利用OpenGL编写绘制具有真实感效果的图形方法。2. 掌握添加光源和设置颜色材料属性的方法。二:实验内容:1. 掌握添加光源的实现方法。2. 掌握设置颜色和材料属性的方法。三:实验要求通过本实验,掌握添加光源和设置颜色材料属性的方法,利用OpenGL编写绘制具有真实感效果的图形。四:实验程序实验步骤14与上述实验1相同5在OpenGLPlatView.cpp中OnDraw函数中添加以下代码:wglMakeCu
14、rrent(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);/设置模型变换矩阵glMa
15、trixMode(GL_MODELVIEW);glLoadIdentity(); /设置光源参数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,lig
16、ht_ambient);glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);/设置材质参数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;GLflo
17、at 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);gl
18、Color3f(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); 实验结果:实验四 纹理映射一:实验目的1. 掌握二维纹理映射方法。2. 掌握利用OpenGL编写绘制具有真实感效果的图形方法。二:实验内容掌握二维纹理映射方法。三:实验要求通过本实验,掌握掌握二维纹理映射方法。四:实验程序实验步骤14与上述实验1相同5在OpenGLPlatView.cpp中OnDraw函数中添加以下代码:wglMakeC
19、urrent(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);g
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 虚拟现实 系统 仿真 实验 指导书
限制150内