因为书中前两章内容主要是讨论Ogre的历史和安装方法,感兴趣可以查阅,就不在本学习系列中讨论了。
1.如何开始
Ogre是个非常庞杂的系统,所以一开始就去学习他的API手册,应该不是一个很好的选择,就如同我们学习.net,不会一上来就去啃.net API大餐一样。基本上我们可以选择性的运行几个Demo,有了基本的认识,就可以开始有针对性的学习一下Ogre的整体知识了。
2.设计理念
如今软件开发的发展趋势是不多的抽象,将人的思维从繁杂的技术细节解放出来。在游戏界也是一样,如果我们使用DirectX或者OpenGL来开发游戏,需要关注很多底层的细节。换句话说,通过面向对象的技术(其实就是封装的概念),Ogre将很多图形显示方面的操作,例如顶点列表,三角形列表和旋转矩阵,变成为了直接对物体的空间位置的转换。这样使得我们容易理解和操作。
3.设计模式
Ogre中有很多地方使用到了设计模式。例如,Ogre使用观察者(Observer)模式将自己的每一个状态变化通知给应用程序,客户代码通过注册来监听Ogre中事件和状态的改变来得到相应通知(例如演示程序中使用的FrameListener对象,可以监听到应用程序每一帧渲染的开始和结束事件)。单件模式(Singleton)用来保证一个类只有一个实例,迭代器模式(Iterator)用来历遍一个数据结构中的所有数据。访问者模式(Visitor)可以让你在不改变对象(例如,场景中所有节点)的前提下,增加定义一个新的对象的操作。外观模式(Façade)为子系统中的一组操作接口报漏给调用层一个统一的接口。最后,工厂模式(Factory)(以及它的近亲抽象工厂模式,Abstract Factory)广泛的用来创建抽象接口的实例。
所以如果我们熟悉设计模式的概念也有助于我们对Ogre的理解。
据说这是Ogre在设计中的一个亮点,个人理解,就是将要想使的内容和需要显示的底层技术分离开了。如果底层技术(场景内容的显示)发生变化,上层(场景图)调用接口和逻辑是不需要改变的。这实际上就是通过一个抽象层或者接口,将底层变化隔离开了。属于比较OO的做法。
5.插件系统
插件系统的特点就不需要多作说明了,可以灵活地将系统所需的组件进行挂接,而不需要重新编译整个程序。
6.渲染队列
Ogre将需要渲染的对象存放到一个有序队列中。这里可以回顾一下有序队列的概念。在这里,每个队列都有一个优先级,但是队列里面的对象,也有自己的优先级。这样我们就可以灵活的控制渲染的顺序。(问题是我们需要手动的控制渲染顺序么?如果需要,在什么场景下面需要这么做?还是说仅仅为了满足一个灵活结构的设计需要?)
7.材质系统
不是很理解这部分内容,以后回来再补充好了。
8.模型和骨骼
关于这个方面,Ogre用了“独特”这个词。其实就是Ogre不能接受其他很多商业游戏中的模型,只能使用特定的模型和骨骼文件。但是Ogre得官方网站上提供了转换工具。所以,这应该是Ogre的一个不足之处,被说成了“独特”,看来什么东西吹一吹就变好了。
9.动画类型
目前支持3种动画方式,包括骨骼动画,变形动画,姿态动画。目前也不是很了解这些动画的具体含义,以后再补充。
10.合成器后处理技术
以后补充。
11.可扩展的资源管理
如果我们想将游戏需要得资源进行归类,可以通过命名组的概念来实现。其作用有点类似命名空间的感觉,便于资源的组织和访问。
好了,今天先到这,太长了,自己看着也烦。以上说的都是Ogre的一些有特色的设计,基本上都是捡好听的说:)以此增加我们学习的兴趣和动力。相当于一个Big Picture。实际上,我们只需要了解如何调用相关的接口和对象就行了。