Ogre 整体框架入门

ogre 是面向对象的3d图形引擎。
root 是引擎的一个界面类,包含很多快捷的调用其他类的接口。
在ogre中,广泛的使用了单件模式,同时最大的保证了你不需要自己管理资源,除了是你自己new的对象(这很少),基本你只需让ogre负责资源管理就行。这对于一个复杂的类库来说,确实是一个很强大的特性。
ogre主要分为场景管理(SceneManager),资源管理(ResourceGroupManager),渲染器(RenderSystem),还有活动对象(Movable Object)这几样重点的。其中渲染器是封装底层图形api的,一般无需进行编程。资源管理器负责调度程序所需要的模型,材质,纹理等资源。而重点,是放在场景管理和对活动对象的编程上。场景管理是管理3d逻辑空间的划分,变换,和空间搜索等操作的。其中划分是一个场景管理的固有功能,无需编程,主要编程在于3d空间变换和空间搜索上,而将活动对象挂接在3d空间的树状对象点上。树状抽象了每个点的3d空间,有自身空间,父空间,还有根空间(也就是世界空间坐标系)。活动对象是一个具体的可以渲染的对象,比如模型,纹理,材质,粒子等,或者是一些协助渲染的对象,比如摄像头,灯光等。
这么复杂的一个对象结构,他们是怎样通信的呢。我留意到了,几乎所有“实例”,都有一个对应的字符串相关,这是一个标识对象和搜索对象的快捷的办法。比如我们要搜索“head"模型,只需要在资源管理器的查找api中将"head"传递过去。然后,所有的对象都有一个对象管理器的单件实现来负责管理,这就为我们提供了简单的入口点。
另一个程序编写的重点在于活动对象本身。主要是他的属性的设置上,相当丰富,ogre的做法是通过脚本来设置。你会看到材质脚本,纹理脚本,模型脚本, GPU程序脚本,粒子脚本等。这在某种程度上,也帮助了可视化辅助工具的开发。假设,我们都能够用工具来生成这些脚本,那么我们实际要编程的东西就可以少很多了。
原文地址:https://www.cnblogs.com/nafio/p/9137671.html