摘要:
场景对象创建场景中的所有对象,包括可移动与不可移动的:lights, cameras, entities,particle system,billboards, skyboxes, static geometry , world geometry.都由场景管理器来创建。场景中的任何东西都由场景管理器来管理。任何通过场景管理器得到的东西,都必须由场景管理器来销毁。用户不能delete通过由场景管理器得到的指针。场景结点只有一个父结点,可能有多个子结点。可以随意的attach 和 detach 这些场景中的结点。在明确告诉场景管理器销毁这些结点前,它们总是存在。如果不想渲染场景中的某些结点上的内容 阅读全文
摘要:
Ogre 场景管理 每个3D引擎都会用scene graph 来组织它的可渲染对象。scene graph 总是会为了更快地搜索与查询做优化,提供给用户查找目标对象附近特定对象的功能,允许查找,排序,剔除多边形,以实现更高效的渲染。偶尔,scene graph也用于碰撞检测。有时,一个单独的scene graph可被用于程序中的所有子系统,包括音效与物理。Ogre使用插件机制来实现场景管理功能。ScenceManager只是接口,他可以有很多具体的实现。Ogre允许在同一时刻同一场景中使用多个Scene Manager,这样在不同的场景类型切换时带来好处。场景管理器的责任1,创建,放置场景中的 阅读全文
摘要:
日志系统:日志记录了基于ogre的程序每次运行时的所有事件,系统初始化,状态,性能信息。输出的内容被放在磁盘文件上,文件缺省名是ogre.log。也可以手动显示创建日志系统,这需要在创建Root对象之前实施。// create an instance of LogManager prior to using LogManager::getSingleton()LogManager* logMgr = new LogManager;Log *log = LogManager::getSingleton().createLog("mylog.log", true, true, 阅读全文
摘要:
子系统概览 Root Object Root 是程序进入点,它是一个façade 类,提供了访问子系统的方便的方法。通过它可以开启ogre,也可能通过它关闭ogre。 资源管理 在渲染场景中使用的任何东西都被视为资源。所有的资源最终都被一个单个类对象管理:ResourceGroupManager,它负责定位资源,初始化资源(不真正装载)。 在缺省情况下,Ogre认识以下类型的资源: Mesh: 二进制格式,它也可包含 morph 和 pose 动画数据 Skeleton: 可以被Mesh文件引用,也可单独使用,包含骨骼层次结构信息,关键帧信息。 Material: 定义了渲染一组几何 阅读全文
摘要:
设计哲学 传统上,使用 Direct3D 或 OpenGL 来渲染场景和对象,需要遵循一系列程序处理流的步骤:调用 API 设置渲染状态,调用 API 发送几何体信息,通知 API 或 GPU 去渲染几何体。对每个几何体都是如此返复,直到当前帧被完全渲染。在一下帧同样如此。 使用面向对象的方法来渲染几何体简化了上述过程。通过处理组成场景的各种对象而不是原始的几何体。这些对象包括:可运动对象,静态对象(构成世界布局),光,相机等。那些 3D API 则不再需要:只是把这些对象放到场景中, Ogre 负责处理琐碎的细节。而且,可以用更加直观的方法来操纵对象,而不是使用矩阵。总的说来,我们可以处理对 阅读全文
摘要:
OGRE(面向对象的图形渲染引擎)是用C++开发的面向对象且使用灵活的3D引擎。它的目的是让开发者能更方便和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库(如:Direct3D和OpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。OGRE特点 效率特性l 简单、易用的面向对象接口设计使你能更容易地渲染3D场景,并使你的实现产品独立于渲染API(如Direct3D/OpenGL/Glide等等)。l 可扩展的程序框架(framework)使你能更快的编写出更好的程序。l 为了节省你的宝贵时间,OGRE会自动处理常见的需求,如渲染状态管理,hi 阅读全文