OGRE架构
来源:互联网 发布:本坦库尔数据 编辑:程序博客网 时间:2024/05/22 17:40
Root:是ORGE核心系统的一部分,必须在所有ORGE对象产生之前初始化,并在所有ORGE对象销毁之后销毁,用来配置系统。
- RenderSystem:是用来发送渲染操作的系统。它是一个抽象类,而另外拥有不同的实现。(OpenGL, DirectX)。
- SceneManager:除Root对象外最重要的ORGE部件。它创建和管理摄象机,可移动物体,灯光和材质,以及不可移动的场景的材质(如天空,大地)。SceneManager保存了各种物体的列表,以便处理物体之间的关系。应用程序无须为之操心。SceneManager还把场景发送到RenderSystem里进行渲染。它确定哪些物体需要绘制,生成一个场景,发送到渲染系统。SceneManager拥有许多子类,因为如何选择物体进行渲染的算法十分多样。缺省的SceneManager功能十分低下,而某些SceneManager子类功能十分强大。例如:BSP(Binary Space Partition)SceneManager处理一个大型建筑。
- ResourceManager:是一些管理资源的类的基类。“资源”指的是贴图,mesh和地图。TextureManager是管理贴图的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");
- 引自:http://bbs.gamedev.csdn.net/Web/54201/ShowPost.aspx
- OGRE架构
- OGRE的良好架构
- Ogre
- ogre
- OGRE
- OGRE
- ogre
- OGRE
- ogre
- Orz是一个基于Ogre思想的游戏开发架构
- Orz是一个基于Ogre思想的游戏开发架构 .
- 【Ogre引擎架构】 第七讲 粒子系统-爆破特效
- 【Ogre引擎架构】 第十讲 唯美场景-天空盒SkyBox
- 【Ogre引擎架构】 第一讲 从零开始 解析角色模型文件(一)
- 【Ogre引擎架构】 第二讲 从零开始 解析角色模型文件(二)
- 【Ogre引擎架构】 第三讲 角色模型文件的渲染数据化
- 【Ogre引擎架构】 第四讲 模型文件渲染数据的存储机制
- 【Ogre引擎架构】 第五讲 从零开始编写3dsMax导出插件
- 十大iOS角色扮演游戏盘点
- C语言教程第五章:函数
- 电容型号和品牌的查询
- ViewFlipper中的WebView屏蔽手势动作的解决方法
- Kinect for Windows (1)
- OGRE架构
- D3D雾
- 函数指针参数传递内存
- JavaScript-ActiveXObject
- Direct3D通用技术与特殊效果
- android4.0 源代码下载(压缩包)
- Kinect (2)
- navicat 注册码
- java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决办法