《虚拟现实与系统仿真》实验指导书---修订

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

虚拟现实与系统仿真实验指导书2014.2实验一基于MFC的基本OpenGL应用程序生成一:实验目的1.熟悉VC++2008集成开发环境;2.熟悉基本MFC应用程序的生成;3.掌握基于MFC的基本OpenGL应用程序生成。二:实验内容1.建立基于MFC的基本OpenGL应用程序;2.配置应用程序,添加OpenGL链接库文件;3.建立OpenGL的基本环境。三:实验背景知识OpenGL是一种图形显示软件工具包,它为图形硬件提供软件接口。OpenGL为计算机动画提供由图形生成图像帧的工具。MFC提供的图形用户界面程序设计技术可以编写人机交互程序,OpenGL技术可以进行各种图形绘制。说明:如果使用的VS2008开发环境,下载OpenGL安装包所需文件:包括:GL.HGLAUX.HGLU.Hglut.hGLAUX.LIBGLU32.LIBglut32.libglut.libOPENGL32.LIBglaux.dllglu32.dllglut32.dllglut.dllopengl32.dllVS2008不带GL.H,GLAUX.h,glu.h,glaux.lib,glu32.lib,opengl32.lib这些文件。通过上面所给地址下载后,把下载的文件分配放在系统中不同的文件夹下,具体配置方法如下:(1)把glaux.dll、glut32.dll、glut.dll拷贝到C:\WINDOWS\system32目录下,system32目录下应该已经有opengl32.dll、glu32.dll了。(2)把GL.H、GLAUX.h、glu.h、glut.h拷贝到C:\ProgramFiles\MicrosoftVisualStudio9.0\VC\include\gl(3)把GLAUX.LIB、Glu32.lib、glut32.lib、Opengl32.lib,glut.lib拷贝到C:\ProgramFiles\MicrosoftVisualStudio9.0\VC\lib四:实验步骤1.文件-新建-项目选择MFC应用程序输入名称OpenGLPlat2.右击项目名,选择属性,再选择链接器中的输入选项,附加依赖项:opengl32.libglu32.libglaux.lib3.选择类视图模式,右击View,再添加变量和头文件或直接在View头文件中添加变量:protected:HGLRCm_hRC;添加包含OpenGL头文件的语句:在COpenGLPlatView中添加代码#includegl/gl.h#includegl/glu.h#includegl/glaux.h4.右击属性消息按钮选择WM_CREATE添加在intCOpenGLPlatView::OnCreate(LPCREATESTRUCTlpCreateStruct)函数中添加代码//添加新的代码开始CClientDCdc(this);PIXELFORMATDESCRIPTORpfd;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;intpixelFormat=ChoosePixelFormat(dc.m_hDC,&pfd);SetPixelFormat(dc.m_hDC,pixelFormat,&pfd);m_hRC=wglCreateContext(dc.m_hDC);return0;右击属性消息按钮选择WM_DESTROY添加voidCOpenGLPlatView::OnDestroy()函数中添加代码//添加新的代码开始wglMakeCurrent(NULL,NULL);wglDeleteContext(m_hRC);m_hRC=NULL;右击属性消息按钮选择WM_SIZE添加voidCOpenGLPlatView::OnSize(UINTnType,intcx,intcy)函数中添加代码//添加新的代码开始CClientDCdc(this);wglMakeCurrent(dc.m_hDC,m_hRC);glMatrixMode(GL_PROJECTION);glLoadIdentity();doubled=10;doublen=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函数中添加以下代码:voidCMy1View::OnDraw(CDC*pDC)//把”/*pDC*/”改成pDC{COpenGLPlatDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);if(!pDoc)return;//TODO:在此处为本机数据添加绘制代码wglMakeCurrent(pDC-m_hDC,m_hRC);glClearColor(1.0f,1.0f,1.0f,1.0f);glClear(GL_COLOR_BUFFER_BIT);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);五:实验结果实验二OpenGL基本图形元素和模型变换一:实验目的1.掌握二次曲面的绘制函数及其应用方法。2.掌握基本实体模型的绘制函数及其应用方法。二:实验内容1.学习二次曲面的绘制函数及其应用方法。2.学习基本实体模型的绘制函数及其应用方法。三:实验背景知识OpenGL提供了二次曲面和基本实体模型的绘制函数及其应用方法。这些二次曲面和基本实体模型在OpenGL内部实现中实际上也是将它们离散分割成为大量的多边形,然后通过绘制多边形的方法实现对这些二次曲面和基本实体模型的绘制。四:实验程序实验步骤1~4与上述实验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_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);//(圆台,下底面半径,上底面半径,圆台高度,绕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);//拱状图形(,内圆半径,外圆半径,扇形瓣数,环的个数,起始角,图形张开的角度)//...//gluSphere(qd,2.0,30,6);//球(,球的半径,分割的瓣数,分割的层次)//auxSolidTetrahedron(4.0);//实体模型auxWireTeapot(4.0);auxSolidTeapot(4.0);//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);//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);实验三光照与材质一:实验目的:1.掌握利用OpenGL编写绘制具有真实感效果的图形方法。2.掌握添加光源和设置颜色材料属性的方法。二:实验内容:1.掌握添加光源的实现方法。2.掌握设置颜色和材料属性的方法。三:实验要求通过本实验,掌握添加光源和设置颜色材料属性的方法,利用OpenGL编写绘制具有真实感效果的图形。四:实验程序实验步骤1~4与上述实验1相同5在OpenGLPlatView.cpp中OnDraw函数中添加以下代码: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();//设置光源参数GLfloatlight_position[]={1.0f,1.0f,1.0f,0.0f};GLfloatlight_ambient[]={0.2f,0.2f,0.2f,0.2f};GLfloatlight_diffuse[]={0.5f,0.5f,0.2f,0.2f};GLfloatlight_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,li

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功