Root类Ogre的程序所需要作的第一件事情就是实例化一个课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Root类Ogre的程序所需要作的第一件事情就是实例化一个课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Root Ogre 程序 需要 第一 事情 就是 实例 一个 课件
- 资源描述:
-
1、Root类:类:Ogre的程序所需要作的第一件事情就是实例化一个Root对象。Root类的构造函数:Root*root=new Root();Root*root=new Root(“plugins.cfg”);Root*root=new Root(“plugins.cfg”,“ogre.cfg”);Root*root=new Root(“plugins.cfg”,“ogre.cfg”,“ogre.log”);Root*root=new Root(“”,“”);第2课 Ogre应用程序基础plugins.cfg文件文件在启动的Ogre时候,会载入plugins.cfg配置文件来查看有哪些插件可以
2、被使用。#Defines plugins to load#Define plugin folderPluginFolder=./PluginFolder标签的值告诉了Ogre到哪个目录下找下面所使用得的插件。#Define plugins/Ogre载入的具体插件Plugin=RenderSystem_Direct3D9Plugin=RenderSystem_GLPlugin=Plugin_ParticleFXPlugin=Plugin_BSPSceneManagerPlugin=Plugin_OctreeSceneManagerPlugin=Plugin_CgProgramManager第2课
3、 Ogre应用程序基础渲染窗口渲染窗口可以调用Root对象的initialise()方法来进行系统初始化:root-initialise(true,”My Render Window”);RenderWindow*window=root-getAutoCreatedWindow();initialise方法的第一个参数告知Ogre系统是否自动建立一个渲染窗口来给用户使用。在我们这里选择了简单的方法,让Ogre给我们提供渲染窗口。第二个参数并且把“My Render Window”作为程序窗口的标题。在这里如果没有提供你自己的窗口标题,那程序就会使用默认的“OGRE Render Window”
4、。第二行代码可以用来得到自动创建的渲染窗口实例的指针。第2课 Ogre应用程序基础Ogre需要摄影机(Camera)来“拍摄”场景:Camera*cam=sceneMgr-createCamera(“MainCamera”);cam-setNearClipDistance(5);cam-setFarClipDistance(1000);cam-setAspectRatio(Real(1.333333);场景管理器是一个生产在你场景中不同对象实体的“工厂”。通过简单调用SceneManager的createCamera()方法,就能得到一个新的摄像机实例。之后你就可以使用这台摄像机来拍摄渲染你的
5、场景了。第2课 Ogre应用程序基础创建一个视口“Viewport”:Viewport*vp=window-addViewport(camera);vp-setBackgroundColour(ColourValue(0,0,0);代码创建了一个视口对象的实例,同时我们也设置了视口(viewport)的背景颜色。第2课 Ogre应用程序基础渲染循环:调用Root对象的srartRendering()方法开始渲染你的场景:root-startRendering();在调用之后,Ogre就会不断地渲染在你场景中所有能被渲染的东西。你可以通过关闭渲染窗口来结束这个过程。当你在注册了帧监听(Frame
6、 Listener)对象,然后在回调结束后返回一个false值给系统,同样也能结束程序渲染。第2课 Ogre应用程序基础帧监听帧监听:如果决定使用startRender()来开始你的渲染过程,你就只能通过使用帧监听对象来在渲染循环中插入你自己的代码了。所谓帧监听对象就是一个符合FrameListener接口的类的实例。当Ogre渲染每一帧的开始和结束的时候会回调FrameListener接口的方法。当程序执行的时候,会在每一次进入Ogre渲染管线之前调用你定义的frameStarted()方法。第2课 Ogre应用程序基础实例代码:实例代码:class MyFrameListener:publ
7、ic FrameListenerpublic:bool frameStarted(const FrameEvent&evt);bool frameEnded(const FrameEvent&evt);bool MyFrameListener:frameStarted(const FrameEvent&evt)/在每一帧画面渲染前,调用这里你写好的代码return true;bool MyFrameListener:frameEnded(const FrameEvent&evt)/在每一帧画面渲染后,调用这里你写好的代码return true;第2课 Ogre应用程序基础实例代码:实例代码:R
8、oot*root=new Root();MyFrameListener myListener;/在这里你需要在调用startRendering()方法前,注册你的帧监听对象!root-addFrameListener(&myListener);root-startRendering();第2课 Ogre应用程序基础深入理解Ogre程序:1.手动载入插件Root提供了两种方法来处理手动载入插件:void loadPlugin(const String&pluginName);void unloadPlugin(const String&pluginName);第一个方法是用来通过名称载入相应插件
9、的。第二个方法是被用来卸载插件。#if defined(_DEGUG)root-loadPlugin(“Plugin_ParticleFX_d”);#else root-loadPlugin(“Plugin_ParticleFX”);#endif第2课 Ogre应用程序基础Ogre程序已有的插件:Plugin_OctreeSceneManager:以八叉树空间管理为基础的OctreeSceneManager(八叉树场景管理器八叉树场景管理器OSM)。同时包含了从其中派生出来的TerrainSceneManager(地形场景管理器地形场景管理器),用来处理从高度图(heightMapped)派生
10、出来的地形场景。Plugin_BSPSceneManager:提供一个对BSP场景的管理系统,用来读取和处理来自雷神之锤III中的地图文件。不过在今天看来这已经是一个古老的地图格式,并且已经没有人再维护和支持它了(提供这个插件的唯一原因是为了某个演示程序的执行)。Plugin_CgProgramManager:这个插件负责载入、分析、编译并且管理Cg语言所写的GPU渲染程序。在今天看来,似乎Cg逐渐被当今技术所抛离(它只能支持3.0版本以前的profiles),因此其价值也越来越小;幸好Ogre在其内部同时支持HLSL和GLSL程序的GPU开发。第2课 Ogre应用程序基础Ogre程序已有的插
11、件:Plugin_ParticleFX:粒子系统管理插件;提供了很多粒子的效果器(Affector)和发射器(Emitter),用来实现一些基本的粒子特效。RenderSystem_Direct3D9:Windows上面对Direct3D 9的抽象层实现RenderSystem_GL:针对所有平台上OpenGL的抽象层实现。第2课 Ogre应用程序基础2.载入渲染系统:Root类提供了用来确认那些API可以被使用的getAvailableRenderers()方法:RenderSystemList*getAvailableRenderers();Root同时也提供了一些用于设置和得到已经载入渲
12、染系统的方法:void addRenderSystem(RenderSystem*naeRend);RenderSystem*getRenderSystemByName(const String&name);void setRenderSystem(RenderSystem*system);RenderSystem*getRenderSystem(void);第2课 Ogre应用程序基础实例代码:/RenderSystemList是std:vector类型RenderSystemList*rList=root-getAvailableRenderers();RenderSystemList:i
13、terator it=rList-begin();while(it!=rList-end()/Ogre的字符串类型String是std:string的扩展RenderSystem*rSys=*(it+);if(rSys-getName().find(“OpenGL”)/把OpenGL渲染系统设置为我们使用的渲染系统 root-setRenderSystem(rSys);Break;/注意,如果系统没有支持OpenGL的话,我们就没有设置任何渲染系统!这将会引起一个Ogre设置期间的异常产生。第2课 Ogre应用程序基础3.渲染窗口当使用手动方式创建渲染窗口的时候,需要通过RenderSyste
14、m类而不是Root类的方法来创建。#include“Ogre.h”Root*root=new Root(“”,”);/建立一个没有配置文件的Root实例root-loadPlugin(“RenderSystem_Direct3D9”);/载入渲染系统插件root-loadPlugin(“RenderSystem_GL”);/在这里我们伪装成用户已经选择了OpenGL渲染器String rName(“OpenGL Render Subsystem”);RenderSystemList*rList=root-getAvailableRenderers();RenderSystemList:iter
15、ator it=rList-begin();RenderSystem*rSys=0;第2课 Ogre应用程序基础3.渲染窗口while(it!=rList-end()rSys=*(it+);if(rSys-getName()=rName)/设置渲染器,并结束循环 root-setRenderSystem(rSys);break;/如果没有找到一个可用的OpenGL渲染器,就在这里结束程序。if(root-getRenderSystem()=NULL)delete root;return-1;第2课 Ogre应用程序基础3.渲染窗口/root初始化的时候,我们可以传入一个false值来告知Roo
展开阅读全文