不好意思,第二个链接竟然是第一部分的续,果然让人受打击,原来第一部分的内容还没完。不过,下面要介绍的内容离我们实际应用开发是越来越近了~
1.场景管理器(SceneManager)
还记得之前说过的场景图和场景内容分离的topic么?不记得了?看这里。简单来说,我们需要在屏幕上画物体,就要用到场景管理器。他可以创建场景节点(SceneNode)。通过场景节点,我们可以控制物体的方位和朝向。也可以进行放大缩小和旋转等操作。注意:场景节点可以出现在不同的场景中。这也就是说,场景节点和场景不是绑定的关系,可以动态添加。
当然了,光是有位置信息是不够的,还需要有物体本身的信息。这个时侯就要提到Entity的概念了。一般来说我们通过载入mesh文件来创建Entity。然后将Entity挂接到(其实Entity就是SceneNode对象的一个引用)SceneNode。
除了SceneNode,我们还可以挂接其他的特殊的节点到场景中,例如Camera,Light对象。个人感觉,这里的设计有点别扭,如果以后还会出现很多特殊的节点对象,Ogre是不是都要创建一个新的子类?为什么不能让Camera,Light成为SceneNode的子类,使得程序更灵活?
2.其他的管理器
·日志管理器(LogManager):发送日志信息给输到出流,也可以把信息送到需要使用的代码中去。
·控制器管理器(ControllerManager):对控制器(Controller)进行管理,所谓控制器,就是基于变量输入来改变其他类状态的工具类;常用于对动态纹理(Animating Textures)和材质的控制。
·动态链接库管理器(DyLibManager):负责管理动态链接库(Windows上的DLL,Linux上的共享对象),是Ogre插件体系实现的基础。也会在关闭系统时候卸载库。
·平台管理器(PlatformManager):用于对不同硬件和操作系统抽象出来具体的通用对象进行管理。比如其中包括了计时器(Timer)和不同的窗体(例如启动Ogre时用来配置渲染系统的对话框)。
·合成器管理器(CompositorManager):用于管理合成器,以便在屏幕空间实现2D后处理特效。
·档案管理器(ArchiveManager):管理档(Archive)所使用的不同“容器”,例如ZIP文件或者系统目录。
·粒子特效管理器(ParticleSystemManager):管理粒子特效,以及维护发射器和效果器的实现和细节。
·材质管理器(MaterialManager):维护应用程序中所有已经载入的材质,并允许不同对象共享同名的材质实例。
·骨骼动画管理器(SkeletonManager):维护应用程序中所有已经载入的骨骼动画,并允许不同的模型共享骨骼动画实例。
·模型管理器(MeshManager):维护应用程序中所有已经载入的模型,并允许不同实体共享同名的模型对象实例。
·高级GPU程序管理器(HighLevelGpuProgramManager):维护,载入,以及编译程序中所有使用的高级GPU着色程序(包括HLSL,GLSL或者Cg写的GPU程序)。
·GPU程序管理器(GpuProgramManager):维护和载入汇编语言的GPU程序,也可以支持高级GPU程序编译成的汇编着色语言。
·外部纹理资源管理器(ExternalTextureSourceManager):管理外部贴图源类的实例,例如那些使用外部视频流生成的即时纹理。
·字体管理器(FontManager):管理和载入用于表层(Overlay)中文本渲染的字体。
·资源组管理器(ResourceGroupManager):作为“接触点”,用于载入和管理已经注册的应用程序资源,比如模型和材质。
·表层管理器(OverlayManager):管理载入和创建2D层类的接口,通常用于HUD,GUI或者其他渲染到场景最上层的2D内容。
·硬件缓存管理器(HardwareBufferManager):管理硬件缓存(像素缓存,顶点缓存,索引缓存等)。
·纹理管理器(TextureManager):管理应用程序中的纹理的索引和载入。
说实话,第一次看到这么多管理器,几乎疯掉了,不够本着一口吃不成胖子的原则,我们慢慢来,发扬蚂蚁啃大象的精神,step by step。好了,喝口水先,明天再来。