转自:
OGRE Homepage :
OGRE的WIKI中有一系列的基本教程,这篇笔记就是读完这些教程后的一个总结。教程首页:。
Basic Tutorial 1主要讲了几个OGRE中的基本概念:
1. SceneManager :所有屏幕上可见的东西都由 SceneManager 来管理;有多种类型的 SceneManager ,分别用来渲染 Terrain 、 BSP 等等。
2. Entity :初步的理解一个 Entity 代表一个 Mesh (可以含有动画), Light , Camera , Particle , Billboard 不用 Entity 表示。 Entity 不能直接加到场景中,必须先 attach 到一个 SceneNode 上, SceneNode 管理位置和方向。
3. SceneNode : SceneNode 管理位置和方向;需要注意子节点的是在父节点的空间中;一个 SceneNode 可以管理多个对象。
4. OGRE 中的 Entity 和 SceneNode 都必须指定全局唯一的名称。
Basic Tutorial 2 主要是讲 OGRE 中的 Light 和 Shadow 的设置
1. 要开启阴影:首先要调用SceneManager:: setShadowTechnique(),然后对于需要开启的Entity调用Entity:: setCastShadows()。
2. 灯光和摄像机都需要由SceneManager来创建,分别是SceneManager::createLight()和SceneManager::createCamera()。
Basic Tutorial 3 主要讲 Terrain 场景, Sky 和 Fog
1. 为了处理Terrain场景,首先要选择相应类型的SceneManager,这里选择了“ST_EXTERIOR_CLOSE”类型。这个操作是通过Root::createSceneManager()完成的。此操作创建并返回了一个TerrainSceneManager指针,同时创建了一个HeightmapTerrainPageSource对象。
2. 加载地形是通过:mSceneMgr->setWorldGeometry( "terrain.cfg" );语句来完成的。
3. 天空是通过SceneManager::setSkyBox()等函数完成的;
4. Fog 是通过 SceneManager::setFog() 完成。
Basic Tutorial 4 引入了 FrameListener 的概念
对于 FrameListener 的初步理解: OGRE 在初始化完成之后,调用 Root::startRendering() 就启动了渲染循环。 FrameListener 是为了给应用程序处理各种事件的机会,最典型的就是 frameStarted() 和 frameEnded() 。
此教程的 TutorialFrameListener 从 ExampleFrameListener 派生,后者又从 FrameListener 和 KeyListener 派生,所以它可以处理按键事件。
Basic Tutorial 5 , 6 没有仔细阅读。
以上几个教程都使用“ ogrenew/Samples/Common ”目录下的 ExampleApplication 的简单框架,有必要对它做一下了解。