Root :是 ORGE 核心系统的一部分,必须在所有 ORGE 对象产生之前初始化,并在所有 ORGE 对象销毁之后销毁,用来配置系统。
RenderSystem :是用来发送渲染操作的系统。它是一个抽象类,而另外拥有不同的实现。 (OpenGL, DirectX) 。
SceneManager :除 Root 对象外最重要的 ORGE 部件。它创建和管理摄象机,可移动物体,灯光和材质,以及不可移动的场景的材质 ( 如天空,大地 ) 。 SceneManager 保存了各种物体的列表,以便处理物体之间的关系。应用程序无须为之操心。 SceneManager 还把场景发送到 RenderSystem 里进行渲染。它确定哪些物体需要绘制,生成一个场景,发送到渲染系统。 SceneManager 拥有许多子类,因为如何选择物体进行渲染的算法十分多样。缺省的 SceneManager 功能十分低下,而某些 SceneManager 子类功能十分强大。例如: BSP(Binary Space Partition)SceneManager 处理一个大型建筑。
ResourceManager: 是一些管 理资源的类的 基类。“资源”指的是贴图,mesh 和地图。Tex tureManager 是管理贴图的ResourceManager 。MeshManager 是管理mesh 的ResourceManger 。
Mesh对象
Mesh对象表示出一种不连续的模型,一组自包含的远小于世界尺寸的几何物体。Mesh对象通常用来表现可移动的小型物体,而不是不可移动的背景。 Mesh是一种资源,可被MeshManager管理。它们通常被保存在文件里,以”.mesh”为扩展名。”.mesh”文件可以通过一个建模工具。 MeshManager::createManual方法可以创建一个Mesh。
Entity对象
Entity是场景的一个可移动物体的实例。它可以是车,人,狗等等。它不必固定在一个位置上。 Entity是不连续的Mesh的集合。多个Entity也可以由同一个Mesh所构成,如果你希望的话。 使用SceneManager::createEntity方法可创建一个Entity,参数为它的名字和它所使用的Mesh的文件名。通过MeshManager,我们能保证同一个Mesh只装载一次。 Entity如不加入到SceneNode中,就不认为它是场景的一部分。通过加入SceneNode,Entity能表现出复杂的继承行为。可以通过修改SceneNode的位置来影响一组Entity。 一个Mesh带来一组材质的定义。你可以在原来基础上改变Mesh的材质,因为每个Mesh由子Mesh单元组成。子Mesh单元分别存储着Mesh的各种材质。通过更换子Mesh,就可以改变原有Mesh的外观。 Entity也是如此,通过更换子Entity,也可改变原有Entity的外观。
Materials对象
材质对象控制物体在渲染系统中如何显示,它包括颜色,亮度等等。SceneManager管理所有的材质。当每个材质被加入到SceneManager时,它们都有一系统缺省属性。
周围的反射光(白色)
漫反射(白色)
emmissive(黑色:无)
亮度(无)
没有贴图层,也就没有贴图
SourceBlendFactor = SBF_ONE, DestBlendFactor = SBF_ZERO (不透明)
开启深度缓冲检查
开启深度缓冲写
深度缓冲比较 = CMPF_LESS_EQUAL
周围光线颜色 = ColourValue(0.5, 0.5, 0.5) (半灰)
开启动态光线
Gourad 阴影模式
Bilinear texture filtering
通过对SceneManager::getDefaultMaterialSettings()的返回值进行更改,可以改变这些缺省值。使用方法SubEntity::setMaterialName()创建一个新的材质,再把一个新的子Entity连接上去。
Overlays
Overlays是用来显示HUD的,如HP血槽。它可以是2维或3维形式。2维的用于显示HUD,3维的可用来表示特殊效果如雨雪等。用 SceneManager::createOverlay方法可以创建两种overlay。你也可用”.overlay”脚本定义它们。 Overlay::setZOrder()方法决定了多个overlay的前后顺序。
创建2维overlay
使用OverlayElement类。
使用OverlayContainer,后者是前者的容器。
使用GuiManager类,使用GuiManager::createOverlayElement方法创建一2维元素到一个overlay。
例子:GuiManager::getSingleton().createOverlayElement("Panel", "myNewPanel");
posted @
2011-12-12 22:16
☆A希亿
阅读(
1172 )
评论()
编辑
收藏
举报