当走了很远后,我们常常忘了最初启程的目的。
当我们学习一门新的开发语言时,大都是以一个输出”Hello world”开始的。那么对于学习Ogre来说ExampleApplication类就是它的入门”Hello world”例子。这个文件可以在..\ogre_src_v1-8-0\Samples\Common\include中找到,还有一个ExampleApplication类用到的类ExampleFrameListener也在该目录下。
可以这么说ExampleApplication类实现了运行Ogre程序的最基本框架,麻雀虽小五脏俱全,通过分析它,能深入理解Ogre的基本思想,机制和原理。
这里我用的图形引擎是DirectX9.0,那么剖析的深度就会到调用DirectX9的方法为止。
在阅读本文之前,确保你已经大概了解了Ogre,并且已经利用继承ExampleApplication类的方法实现一个最简单Ogre渲染实例,比如说渲染出来Ogre头。如果你不清楚这个怎么做,或者不知道如何配置Ogre,就百度吧。这里重点在对Ogre源码的剖析,不会太多介绍怎么用Ogre,而是重点放在介绍Ogre做了些什么,怎么做的这些问题上。
首先来看一下ExampleApplication类都有哪些成员变量,如下:
Root *mRoot;
Camera* mCamera;
SceneManager* mSceneMgr;
ExampleFrameListener* mFrameListener;
RenderWindow* mWindow;
好,下面就开始剖析第一类:Root。下面是引用《Ogre帮助手册》对Root对象的解释:“根(Root)对象。这是你进入OGRE系统的“入口”,根(Root)对象用来创建OGRE系统中的所有的基础元素,比如:场景管理器(Scene Managers),绘制系统(Rendering Systems),绘制窗口(Render Windows)和插件加载器(Loading Plugins)。根(Root)对象是