资源描述:
《OGRE教程- 启程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、OGRE教程-启程最近忙申请,耽误了讲座,对不起大家了…本来想发帖解释,但是发现最好的解释就是发布新的一期讲座.暂时把烦心的申请之事放到一边.让我们开始写出第一个OGRE程序HelloOGREOGRE作为一个纯面向对象的3D引擎,在设计上是非常的优秀的.具体表现在其封装性–即该引擎把烦琐的事情一一封装,留出几个简易的结构供大家调用.OGRE官方的SDK中提供了一些Example代码,每个example都继承与一个叫ExampleApplication的类,我在后续的讲座中同样采取这种方案.而今天的主要内容,就是讲解和实现这个ExampleApplication类的简缩版本–官方提供的版本是多平
2、台的,增加的复杂性.既然很少有人用其他平台(例如Apple),我们就模仿官方代码写一个自己的类吧.首先补充一些入门知识Ogre中,最常用的几个类如下:RootCameraSceneManagerXXXFrameListener(继承与FrameListenr的类)RenderWindowSTEP1首先,我们要初始化Ogre,就需要创建一个Root实例,因为这个类提供了几乎所有的功能.以下是Root的各种构造函数,其中参数里包括了配置文件,插件文件和日志文件,当然,如果你选择默认构造函数,那么这些文件的名字都使用默认了.Root*root=newRoot();Root*root=newRoot(
3、“plugins.cfg”);Root*root=newRoot(“plugins.cfg”,“ogre.cfg”);Root*root=newRoot(“plugins.cfg”,“ogre.cfg”,“ogre.log”);Root*root=newRoot(“”,“”);plugins.cfg文件Ogre中所谓的插件就是符合Ogre插件接口的代码模块(在Windows下面是DLL文件,在Linux下是.so文件),比如场景管理(SceneManager)插件和渲染系统(RenderSystem)插件等。在启动的Ogre时候,他会载入plugins.cfg配置文件来查看有哪些插件可以被使用
4、。这是一个官方样例的plugins.cfg文件的内容#Definespluginstoload#DefinepluginfolderPluginFolder=.#DefinepluginsPlugin=RenderSystem_Direct3D9Plugin=RenderSystem_GLPlugin=Plugin_ParticleFXPlugin=Plugin_BSPSceneManagerPlugin=Plugin_OctreeSceneManagerPlugin=Plugin_CgProgramManager注意:在“=”的两边并没有写入空位符号(比如空格或者Tab),因为在这里如果填入
5、空位的话就会被系统认为是语法错误,导致无法载入插件。在所列出的插件中,最上面两行列出了两种不同的渲染系统以供选择;在后面的分别是特效系统和场景管理插件等等。在你自己的程序中,虽然没必要载入所有插件,但至少要包含一个渲染系统插件系统才能正常工作。但是如果真的光使用渲染系统插件也不是一个很好的决定,因为这样只能实现一个简单的场景(极其简陋!)。所以至少还要加上一个场景管理(例如OctreeSceneManager)的才能算真正的开始。Ogre.cfg文件这个文件可以在创建Root以后由一个Ogre提供的图像界面创建,包括一些属性实际上文件内容如下:RenderSystem=Direct3D9Ren
6、deringSubsystem[Direct3D9RenderingSubsystem]AllowNVPerfHUD=NoAntialiasing=NoneFloating-pointmode=FastestFullScreen=NoRenderingDevice=NVIDIAGeForceGo6200VSync=NoVideoMode=800x600@32-bitcolour[OpenGLRenderingSubsystem]ColourDepth=32DisplayFrequency=60FSAA=0FullScreen=YesRTTPreferredMode=FBOVSync=NoVid
7、eoMode=1024x768如果你不想手工修改这个文件,以上内容可以无视.Ogre.log文件顾名思义,日志文件.至于具体使用我概要的说明一下吧,反正我是没有怎么用过(调试的时候还是有用的)首先通过LogManager::getSingleton()建立一个日志管理器实例。注:Singleton是设计模式的一种,即一个类只能创建一个实例.构造函数为private属性.1.建立日志管理器LogMa