资源描述:
《西工大C++程序设计期末大作业》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、学院班级学号姓名摘要设计是基于opengl的windows地形显示系统,从地形高度图中读取相应信息,使用opengl针对不同的地形进行绘制。并可以根据键盘输入调节摄像头位置和视角,达到动态效果。Email:youname@nwpu.edu.cn23目录1摘要31.1设计题目31.2设计内容31.3开发工具31.4应用平台32详细设计32.1程序结构32.2主要功能32.3函数实现32.4开发日志43程序调试及运行43.1程序运行结果43.2程序使用说明43.3程序开发总结44附件(源程序)4Email:youname@nwpu.edu.cn231摘要1.1设
2、计题目基于opengl的windows地形显示系统1.2设计内容从地形高度图中读取相应信息,使用opengl针对不同的地形进行绘制。并可以根据键盘输入调节摄像头位置和视角,达到动态效果1.3开发工具VC6.01.4应用平台Windows2000/XP/Vista32位2详细设计2.1程序结构LoadPicInitRshapeDrawSceneKeyfuncEmail:youname@nwpu.edu.cn23主要函数功能介绍:Loadpic参数:无功能:将terrain.dat的高度信息读取到缓存中,并绑定至texture_2d中,设置好相应的WRAP,FI
3、LTER等参数。Init参数:无功能:清屏。设置depth参数。设置shademode。设置雾效果。设置modelviewprojviewport参数。Reshape参数:无功能:设置modelview,projection,viewport参数。Drawscene参数:无功能:清屏。计算摄像头坐标。绘制地形。Swapbuffer。打印fps。Key:参数:无功能:根据键盘输入进行相应的opengl参数设置。Special参数:无功能:这对SPECIALKEEYINPUT设置视角。2.2主要功能本次大作业采用opengl作为图形绘制接口,在window平台上
4、实现了一个基本的地形绘制系统。主要包括以下几个主要环节:1.系统初始化。此部分分两个步骤:A)从terrain.dat高度文件中读取需要绘制的地形的各个坐标高度值。将该地形缓存绑定至GL_TEXTURE_2D纹理中,然后对此纹理的WRAPFILTERENV_MODE进行相应的设置B)初始化其他参数。包括clearcolor,雾参数,alpha混合。然后进行modelview,projection,viewport坐标变换的矩阵进行初次设置。2.输入响应。包括一般键盘输入和方向键输入。A)一般键盘输入。主要控制摄像头的速度,是否启用雾效果。设置fillmode
5、。设置cullmode。Email:youname@nwpu.edu.cn23A)方向键输入。属于特殊键位处理。可以修改摄像头的俯仰角度。1.地形绘制。该环节功能最多。包括:A)使能GL_TEXTURE_2D。清屏。保存现场矩阵。B)计算摄像头位置。C)计算地形颜色。主要是根据高度信息进行相应的高度--颜色映射。D)交换前后buffer。E)计算fps并显示。2.3函数实现(1)系统初始化函数:Loadpic:使用文件操作打开terrain.dat高度文件。将高度信息读取到terrain[]数组中。fread(bufferter,256*256,1,File
6、Pic);利用calccolor函数将高度信息转换为颜色信息。calccolor((GLfloat)bufferter[i],terraincolor[i]);将颜色信息传送给GL_TEXTURE_2D。gluBuild2DMipmaps(GL_TEXTURE_2D,1,256,256,GL_LUMINANCE,GL_UNSIGNED_BYTE,(GLvoid*)(&terrainpic[0]))))利用glTexParameterf和glTexEnvf接口设置GL_TEXTURE_2D的参数。使能GL_TEXTURE_2D。glEnable(GL_TEXT
7、URE_2D);init:设置defaultcolor和depth。glClearColor(fogcolor[0],fogcolor[1],fogcolor[2],fogcolor[3]);glClearDepth(1.0);使能depthtest。glEnable(GL_DEPTH_TEST);设置雾参数。glEnable(GL_FOG);glFogi(GL_FOG_MODE,GL_EXP2);glFogfv(GL_FOG_COLOR,fogcolor);glFogf(GL_FOG_DENSITY,0.0007);设置各个矩阵。reshape(scrwi
8、dth,scrheight);Email:youna