openGL构造教室

openGL构造教室

ID:47432228

大小:2.15 MB

页数:40页

时间:2020-01-11

openGL构造教室_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《openGL构造教室》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、虚拟现实与数据可视化课程作业董元22011207基于openGL的虚拟教室——虚拟现实与数据可视化课程作业董元22011207指导老师:孙立博老师仪器科学与工程学院2013年12月16日40/40虚拟现实与数据可视化课程作业董元22011207一、作业要求用openGL制作一个虚拟教室。要求视角可变化,教室里的物品不少于五件。二、完成情况我的openGL虚拟教室完成情况如下:1、绘制出的教室里的基本物体:黑板、讲台、投影仪、空调、门窗、音响、九张桌子、九张凳子等。虚拟教室整体看上去接近真实生活中的教室。2、添加了灯光和纹理效果:门窗以及空调均是用纹理贴出来的。使教室看起来

2、更加生动形象。3、为教室加上了可用键盘控制的动态效果:可控制灯光亮灭、投影仪收起放下、六块黑板的上下滑动以及音响的开关。4、引用FMOD音乐引擎,为教室加上可控背景音效(即3中的音响开关)。5、在输出窗口添加操作提示信息,使界面更加人性化。三、成果演示1、整体效果图40/40虚拟现实与数据可视化课程作业董元220112072、改变视角效果40/40虚拟现实与数据可视化课程作业董元220112073、开灯关灯对比效果图未开灯时:40/40虚拟现实与数据可视化课程作业董元22011207开灯时:4、投影仪放下效果图:40/40虚拟现实与数据可视化课程作业董元220112075

3、、黑板移动效果图6、局部细节效果图40/40虚拟现实与数据可视化课程作业董元22011207一、内容介绍下面我将从代码的角度简单介绍一下我的整个教室程序。代码部分包括一个头文件(MyHeader.h)和一个cpp文件(main.cpp)。为了40/40虚拟现实与数据可视化课程作业董元22011207增加程序的可读性,我将相关的变量定义、函数声明等集中放置在头文件下面。在我的全部代码中,除了主函数外,共定义了19个子函数。如下图所示:主程序部分和一般的openGL程序一样,完成初始化、窗口的绘制、显示回调函数和键盘以及一些特殊事件的响应。主函数如下:初始化部分由函数init

4、()完成,而init中又调用了进行灯光初始化的函数initlight()以及进行纹理图像载入的LoadTexture1()、LoadTexture2()、LoadTexture3()。这主要是因为灯光初始化和载入纹理相关代码较多,这么做是为了使代码看上去更加层次分明绘制教室的工作由回调函数display()完成。而所有子函数中与绘制教室相关的子函数还有DrawRoom()、DrawDesk()、DrawBlackboard()以及Drawotherthings();分别完成教室墙面、40/40虚拟现实与数据可视化课程作业董元22011207黑板、桌椅及其他物体的绘制。其中

5、,整个教室空间有六个大矩形拼接而成;桌椅由梯形不一的长方体拼接而成。可以这样说,整个教室基本上都是由不同的立方体和矩形构成的。所以从这一点上来说,绘制教室并没有使用任何复杂的openGL内置函数。响应按键主要是由OnKeyboard()和OnSpecial()完成的。OnSpecia()函数其实只是响应退出窗口的ECS键,为了从逻辑上区分这一事件与普通按键响应的不同,我把响应这一事件的代码放在了OnSpecia()函数下。而其他响应普通事件的代码则在OnKeyboard()下。而普通事件的响应程序,又调用到了函数InitFMOD(),(响应播放音乐),函数projecto

6、r_dispaly1()、projector_dispaly2(),(响应投影仪的放下与收起,实质是在对窗口的重新绘制时改变投影仪的相关参数)。一、收获感想1、对于任何一种编程语言或者是API,当我们在使用它们编程时,都首先要对其基本原理有一个最基本的认识。贸然地调用函数或是凭感觉去编程,往往会造成不可预知的错误。而且一旦错误发生,往往很难解决。在程序的编写过程中,最开始时对openGL了解甚少,在参考示例程序时移植他人的代码往往很难产生自己希望的效果,就是这个道理。而且,在编写整个程序的过程中,出现过一个我一直无法解决的问题:通过编译后程序运行一段时间自己会卡死。在请教

7、了老师以后才知道,该问题出现的原因是我把载入纹理的代码放在了显示回调函数中,这样一来每一次重新绘制窗口,程序都会开辟新的内存用以储存相关信息。因此程序运行一段时间之后内存不足,便会报错。这个问题是我自己很难考虑到的,这也是让我认识到自己对程序的基本理解的不足,这方面需要进一步加强。2、我觉得这次作业给我带来最大的收获就是它起到了一个抛砖引玉的效果。虚拟教室的创立不仅让我对openGL这个图像程序接口产生了很大的兴趣,也让我对虚拟现实技术产生了更多的期待。而且,在编写程序的过程中我又接触到一个有趣的音乐引擎FMOD。这些都让我觉

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。