OGRE的启动

转载 2013年12月04日 00:21:27
1. 编译链接配置
        在ubuntu环境下,添加编译include路径地址:/usr/include/OGRE,/usr/include/OIS;添加链接库:-lOgreMain, -lOIS;

2. 程序头文件
        包含必须的头文件:Ogre.h, OIS.h;

3. 创建Root对象
        mRoot = new Root(mPluginConfig, mOgreConfig, mLogConfig);
        共有三个参数:Plugin配置文件名称,Ogre配置文件名称,日志文件名称
        默认值分别为:plugins.cfg,ogre.cfg,Ogre.log
        如上述什均不作修改,也可以忽略,如mRoot = new Root();

4. 解析资源文件resource.cfg
        ConfigFile cf.load("resouces.cfg");
        创建ConfigFile对象,调用其load()加载资源文件;并用SectionIterator迭代器遍历所有资源条目;
        其中,typedef MapIterator<SettingsBySection> SectionIterator;
        ResourceGroupManager::getSingleton().addResourceLocation(archName, typeName, resName);
        把每一项资源解析出来的资源位置,类型,资源名称作为参数,调用上述addResourceLocation加入资源组管理器;

5. 创建渲染系统
        if (!mRoot->restoreConfig() && !mRoot->showConfigDialog()) return false;
        上面语句首先尝试恢复设置,如果失败再显示对话框让用户选择新的配置,来创建新设置;
        如果恢复和创建设置操作都失败了,就退出程序,也可以抛出异常;

6. 创建渲染窗口
        mRoot->initialise(true, "Ogre Render Window");
        此初始化函数创建一个RenderWindow,它有三个参数:是否自动创建窗口,窗口的标题,和自定义显示内容;最后一个参数默认为StringUtil::BLANK,表示一个空窗口;

7. 初始化资源
        TextureManager::getSingleton().setDefaultNumMipmaps(5);
        设置mipmap,这是一种电脑图形图像技术,用于在三维图像的二维代替物中达到立体感效;
        ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
        初始化所有的资源组;

8. 设置输入设备处理(OIS)
        首先配置InputManager,比较难配置;
        mKeyboard = static_case<OIS::Keyboard *>(mInputManager->createInputObject(OIS::Keyboard, false));
        mMouse = static_case<OIS::Mouse *>(mInputManager->createInputObject(OIS::Mouse, false));
        使用InputManager对象,分别创建键盘和鼠标设备;

9. 创建场景管理器
        mSceneMgr = mRoot->createSceneManager(ST_GENERIC, "ogre scene manager");
        通过Root对象创建场景管理器,类型选择ST_GENERIC,其它类型还有:ST_EXTERIOR_CLOSE, ST_EXTERIOR_FAR, ST_EXTERIOR_REAL_FAR, ST_INTERIOR。

10. 创建默认的Camera和Viewport
        mCamera = mSceneMgr->createCamera("Default Camera");
        mViewport = mRoot->getAutoCreatedWindow()->addViewport(mCamera);
        上述语句分别创建默认的Camera和Viewport,并把Camera绑定到Viewport;它们的创建分别在不同的函数中实现,以方便继承类的重写;

11. 调用createScene
        编写自己的游戏,添加布局;

12. 设置帧监听器
        FrameListener监听器实现对所有帧事件的监听,主类可以选择继承该监听器类,或者创建一个新的监听器类;
        mRoot->addFrameListener(this);
        bool StartOgre::frameRenderingQueued(const FrameEvent &evt);
        调用函数把监听器加入mRoot,并实现每帧渲染队列方法,它在渲染命令下达之后,窗口准备刷新缓存之前调用;
        可以在此方法里实现键盘事件处理、鼠标事件处理、或其它逻辑的控制;

13. 开始渲染
        mRoot->startRendering();
        程序就开始渲染,直到帧监听器返回false

14. 程序结束
        调用析构函数,释放资源;

相关文章推荐

Ogre启动过程&原理

#include #include #include #include using namespace Ogre; class ExitListener : public FrameListe...

ogre的启动顺序

用惯了eclipse  发现vsiualc++好笨啊 参照官方原文http://www.ogre3d.org/tikiwiki/Basic+Tutorial+6&structure=Tutori...

ogre学习笔记(启动篇)

ogre学习笔记(启动篇)

ogre 学习笔记系列(三)启动过程 参考 ExampleApplication.h

1、入口: /// Start the example virtual void go(void) { if (!setup()) ...

ogre的初始化与启动以及显示对象设置

ogre的使用方法1---自动设置 1、ogre初始化: 首先实例化一个Root对象 Root * root = new Root(); Root * root = new Root...

OGRE启动过程详解(OGRE HelloWorld程序原理解析)

原文地址:http://www.it165.net/pro/html/201403/10144.html 本文介绍 OGRE 3D 1.9 程序的启动过程,即从程序启动到3D图形呈现,背后有哪些...
  • ldkcumt
  • ldkcumt
  • 2015年10月23日 17:15
  • 301

【Ogre编程入门与进阶】第十一章Ogre启动序列(Startup Sequence)

相信每一位读者朋友一直会有一个这样的疑问,虽然我们通过前面章节的学习可以做出一些相对比较复杂的应用程序了,但是总是感觉不能完全把握整个Ogre3D的流程,而且我们前面都是在继承Ogre3D为我们提供的...

ogre beginner guide(中英双语版)

  • 2013年09月27日 14:02
  • 8.63MB
  • 下载

ogre 碰撞检测

  • 2016年08月23日 13:35
  • 46.21MB
  • 下载

Ogre材质系统总结(一)

Ogre材质系统总结(一) 材质基础列举 1,材质是在资源初始化完成之后加载进内存的,开始加载的只是*.material的定义部分(包括使用到的shader脚本),等需要使用相应材质的时候,材质所管...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OGRE的启动
举报原因:
原因补充:

(最多只允许输入30个字)