游戏开发实验2,3.doc_第1页
游戏开发实验2,3.doc_第2页
游戏开发实验2,3.doc_第3页
游戏开发实验2,3.doc_第4页
游戏开发实验2,3.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二、三 Ogre安装及ogre类图一、实验目的熟悉Ogre的安装过程及编程风格,掌握Ogre的类结构,画出类图二、实验仪器PC机,visual studio 2005三、实验原理及过程1、阐述Ogre安装过程1.1 获取OGRE1.2 支撑环境OGRE是一个比较大的项目,不可能每个功能都独立完成。OGRE的编译和使用需要一些其它库作为支撑环境。在Windows环境下编译和安装OGRE需要如下支撑环境: DirectX 9 SDK、其它第三方库、VC系列/推荐vs2005及以上(vs2005需要补丁sp1),ogre1.2以后不直接支持vc6.0和vs2003。1.3 编译OGRE可以直接安装ogre sdk,但推荐对源码进行编译.编译前需下载vs2005的依赖项,解压缩并将Dependencies整个目录copy到ogre主目录里打开 vs 2005,设置工作环境 (1) 在主菜单中选择 工具-选项. ,打开 选项 面板,在左边目录选择 项目-VC+ 目录 ; (2)在右栏设置 Include 和 Lib 目录:C:Program FilesMicrosoft DirectX SDK (August 2009)Include F:ogreDependenciesincludeC:Program FilesMicrosoft DirectX SDK (August 2009)Libx86F:ogreDependencieslibDebugF:ogreDependencieslibRelease现在打开 F:ogreOgre_vc8.sln ,从主菜单中选择 生成-批生成. ,打开 批生成 面板,点击右边的 全选 按钮,然后点击 重新生成 按钮开始生成 1.4 运行DEMO在ogreSamplesCommonbinDebug下可以看到Debug方式编译的全部DEMO。1.5 OGRE运行期结构运行完DEMO之后,注意查看ogreSamplesCommonbinDebug文件夹中的内容,从这里可以看到OGRE程序的运行环境。除了DEMO的可执行文件外,该文件夹中还包括如下的动态链接库:OgreMain.dllOIS.dllRenderSystem_Direct3D9.dllRenderSystem_GL.dllPlugin_GuiElements.dllPlugin_BspSceneManager.dllPlugin_OctreeSceneManager.dllPlugin_PCZSceneManager.dllPlugin_ParticleFX.dllOGRE的运行还需要如下的配置文件: ogre.cfg:OGRE的显示模式配置文件Plugins.cfg:插件配置文件,在这里指定插件的路径和插件文件名。上一个表中以Plugin_开头的dll文件都是插件,它们可以放在其它文件夹里,但必须在本文件里指定路径。resources.cfg:资源配置文件,设置资源搜索路径,Zip文件也作为搜索路径对待。quake3settings.cfg:quake3地图配置文件。terrain.cfg:室外地形场景配置文件。OGRE程序的资源路径在resources.cfg里指定。OGRE DEMO的资源都放在ogreSamplesMedia及其下的Zip文件里。资源文件包括以下内容: .skeleton骨骼动画的骨骼定义文件.particle粒子模板定义文件.overlay二维及三维界面定义文件.mesh模型文件.material材质定义文件.fontdef字体定义文件.jpg图片文件.png图片文件2、网上查阅Ogre相关知识,类图知识2.1 Ogre相关知识OGRE(Object-Oriented Graphics Rendering Engine,即:面向对象图形渲染引擎)是一个用C+开发的面向场景、非常灵活的3D引擎,它旨在让开发人员更容易、更直接地利用硬件加速的3D图形系统开发应用。这个类库隐藏了底层系统库(如:Direct3D和OpenGL)的所有细节,提供了一个基于世界对象和其他直观类的接口。 译者注:ogre在英文中意为:食人魔鬼, 怪物, 象鬼的人,故其LOGO是一个怪物头。功能和特点 简单易用的面向对象接口 最小化渲染3D场景 自动完成功能 类设计简洁 完全的面向对象 支持Direct3D和OpenGL 支持Windows,Linux和Mac OSX 强大的材质声明语言 支持顶点和片断程序 支持全范围的固定功能操作 多通路效果 支持多材质技术 支持材质LOD 从其他文件中装载纹理 支持动态纹理 接受灵活的网格数据格式 可从许多建模工具导出模型 骨骼动画 二次贝塞尔曲面 高度用户定义 基于BSP的插件 结构化场景图 粒子系统 灵活的雾控制 调试内存管理器 易于扩展Ogre 3D不能处理用户输入,不能管理你的游戏状态,不能做网络通讯,不能播放声音。它只是做为一个3D渲染引擎被设计出来,并且那就是它唯一的应用。开发一个游戏需要结合其它引擎:物理引擎:physX,ODE等声音引擎:一般用FMOD网络引擎:Raknet,Orz等界面设计:CEGUIOgre引擎特性Ogre几乎拥有了商业3D渲染引擎的全部特性,甚至在某些方面超越了它们。全面并同等的支持OpenGL和Direct3D全面支持Windows,Linux以及Mac OS X平台简单并可扩展的对象框架,能方便的插入到已存在的应用程序框架中自动处理渲染状态和空间剪裁强大且成熟的材质管理和脚本系统,可以不动一行代码去进行材质维护支持所有纹理混合和绑定技术,同时支持对GPU编程技术,支持汇编语言和所有高级语言形式的各种着色语言,其中高级语言包括:Cg,HLSL和GLSL支持多种纹理图片格式,包括:PNG,TGA,DDS,TIF,GIF,JPG,同时支持特殊格式的纹理,其中包括:一维纹理(1D),容积纹理(Volumetric textures),体积纹理(Cubemaps)和压缩的纹理格式如:DXTC全面支持渲染到纹理(Render-to-Texture)技术和投影纹理(贴花,Projective Texturing-decals)。全面支持材质LoD(细节层次,mipmapping)技术优化的二进制模型文件格式,同时支持手动和自动LoD生成同时拥有多种从商业或者开源3D模型软件导出到Ogre模型格式和动画格式的插件,其中包括官方以及用户提供的版本。全面支对顶点和索引缓存(vertex and index buffers)、顶点声明(vertex declarations)以及贴图缓存(buffer mappings)全面支持骨骼动画和姿态动画(pose动画,顶点动画的一种),每个顶点可以混合任意数目的骨骼权重支持软件和硬件加速蒙皮支持静态几何体批次(static geometry batching)支持二次贝塞尔曲面(biquadric Bezier patches)给出以插件方式链接不同场景结构的接口,允许你使用适合自己应用程序的场景体系( 基本的八叉树“octree”场景管理做为一个例子出现在插件中)高级可屏蔽场景查询系统(Advanced maskable scene-querying system)全面支持多种阴影技术,包括模版阴影(stencil),纹理阴影(texture),叠加阴影(additive),调制阴(modulative),并且全部支持硬件加速高级插件方式的粒子系统,可扩展的发射器(emitters),效果器(affectors),渲染器(renderers)(ParticleFX作为插件的例子被包含在工程里面)全面支持并且方便使用的天空盒(skyboxes),天空面(skyplanes),以及穹顶(skydomes)以精灵效果为基础(sprite-based)并得到渲染优化的公告栏(Billboarding)技术以单一队列为基础的渲染管理,允许全面操作渲染执行顺序自动管理透明对象成熟且可扩展的资源管理和载入系统,文件系统支持的文件包括zip,pk3格式2.2 Ogre类图知识及画类图OGRE 是一个开源图形渲染引擎,本文给出了它的总体类图和绘制一帧图形的序列图,读者从中可以体会 OpenGL 等底层图形库是怎么封装的,以及如何设计一个图形渲染引擎。 OGRE (Object-Oriented Graphics Rendering Engine),即面向对象图形渲染引擎,是一个面向场景管理的 3D 图形引擎,它基于 C+ 开发,帮助开发人员更容易的开发带硬件加速的 3D 图形程序。它的类库封装了底层图形库(Direct3D 和 OpenGL)的所有细节,提供了基于世界对象的接口和类。下图是 OGRE 的核心对象图:OGRE 核心对象图(from OGRE website)最上面是 Root 对象,你主要通过 Root 对象来使用 OGRE 系统,它包含了 SceneManager、RenderSystem 等其它对象的引用,Root 是所有对象的组织者。从功能上看,剩下的类可分成三种:场景管理,它负责管理场景中的内容,怎样组织它们,从 camera 中如何观察它们等等; 资源管理,所有的渲染都需要资源,如几何图形、纹理、字体等等。资源管理模块负责这些资源的装载、复用、卸载等; 渲染,它负责将对象绘制到屏幕上。 另外还有些插件,它们增强了 OGRE 的可扩展性。OGRE 中的很多类可以被继承和扩展,如引入一个自定义 SceneManager、增加一个新的渲染系统实现(OpenGL 或者 DirectX),从数据库装载资源等。High level overview从较高的层次看,OGRE 的类图如下所示:OGRE 类图 (from OGRE Wiki)该图显示了 Root 类与负责访问其它子系统的管理类之间的关系:Root 类包含一个 SceneManager 对象和一个 enumerator 对象,前者是当前的 SceneManager,后者负责装载其它类型的场景图形; RenderSystem 是一个抽象类,它将 Root 跟具体的底层图形库(OpenGL 或者 Direct3D)分离; ResourceManager 是一个抽象类,很多处理资源 (纹理、材质、字体等) 的管理器继承自它; 类图中除了 RenderSystem, SceneManager 和 RenderWindow 之外,其它的类都使用了单件模板,以保证每个类只有一个实例。绘制一帧图形的序列图OGRE 序列图 (from OGRE Wiki)3、异地编译新建空白项目skyplane_01复制ExampleApplication.h ExampleFrameListener.h SkyPlane.cpp SkyPlane.h 到skyplan_01目录下(在项目的目录下),并选择 添加-添加现有项.添加到现有项目中来(.h文件在C:sdkogreSamplesCommoninclude里可以找到)在我们新建的 “SkyPlane_01” 项目上右击,在弹出的关联菜单中选择 属性 ,弹出项目属性页,设置下列选项:Debug 常规: 输出目录:.CommonbinDebug调试: 工作目录:.CommonbinDebugC/C+ 代码生成:运行时库:多线程调试 DLL (/MDd) 链接器 输入: 附加依赖项:OgreMain_D.lib OIS_D.lib Release 常规: 输出目录:.CommonbinRelease 调试: 工作目录:.CommonbinRelease C/C+ 代码生成: 运行时库:多线程 DLL (/MD) 链接器输入: 附加依赖项:OgreMain.lib 项目属性 C、c+附加包含目录 加入 C:sdkogreOgreMaininclude C:sdkogreDependenciesincludeOIS C:sdkogreDependenciesinclude链接器/常规/附加库目录 C:sdkogrelib四、实验结果五、实验心得本次实验主要目的是熟悉并掌

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论