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启动过程详解(OGRE HelloWorld程序原理解析)

本文介绍 OGRE 3D 1.9 程序的启动过程,即从程序启动到3D图形呈现,背后有哪些OGRE相关的代码被执行。会涉及的OGRE类包括: RootRenderSystemRenderWindo...
  • wang371372
  • wang371372
  • 2014年12月05日 14:57
  • 632

OGRE学习笔记之 配置文件 Ogre.cfg

Ogre.cfg  OGRE 引擎将会在可执行文件所在的文件夹中生成一个 ogre.cfg 文件该文件保存了本次对话框的设置结果,下次显示对话框时会将上次的配置结果读入并直接显示。例子框架用 mRo...
  • buku2010
  • buku2010
  • 2014年02月25日 09:56
  • 495

ogre 引擎 框架追踪 第一章 root的创建

使用ogre引擎很久了,对于渲染过程基本了解,但是没有详细到一定程度。终于有时间整理一下了,顺便达到一个秘密的目的。版本ogre 1.8.1. ogre 从流程上分为初始化、场景渲染、渲染结束(关闭...
  • mansir123
  • mansir123
  • 2016年11月23日 10:40
  • 381

Ogre 1.8.1源代码编译和错误修改

写在一边,最好不要略过的话。 这篇blog是按照编译–>出错–>解决错误–>再编译 的方式写的。 我认为这种逐步改错的过程有助于学习和理解,所以这样写的。 最节约时间的方法,就是先全...
  • jean7155
  • jean7155
  • 2015年08月30日 19:44
  • 1608

Ogre中手动创建mesh

在一个可以正常运行的ogre程序里边,找到createscene函数,添加如下代码: //定义对象并设置材质名称与绘制模式ManualObject* manual = mSceneMgr->creat...
  • pizi0475
  • pizi0475
  • 2011年05月25日 15:46
  • 3859

Ogre屏幕坐标的几种方式

在使用Camera::getCameraToViewportBoxVolume (Real screenLeft,Real screenTop, Real screenRight, Real scre...
  • liupeng1985
  • liupeng1985
  • 2014年04月12日 15:29
  • 764

Ogre::基础知识介绍

转载自:http://blog.csdn.net/kuangfengwu/article/details/78607981: 设计初衷 它设计初衷是完全跨平台的。抽象的接口隐藏了平台相关的细节。 ...
  • cao269631539
  • cao269631539
  • 2017年01月04日 19:44
  • 241

初学Ogre:通过sample实现自己的作品

比如实现环境纹理映射效果,通过运行示例程序 ,可以看出与之对应的文件在sample中的 里面,打开它,即可查看到里面的代码。它的创建场景的代码写在函数void setupContent()里面。第...
  • qqqqqqqqqq1qqqqqqqqq
  • qqqqqqqqqq1qqqqqqqqq
  • 2015年06月15日 16:39
  • 408

OGRE中的四元数与旋转

                                  OGRE中的四元数与旋转 Kevin Lynx2007-7-21              想象一个物体在3D空间中移动的过程,该物...
  • kevinlynx
  • kevinlynx
  • 2007年07月21日 13:50
  • 6807

Ogre粒子系统脚本详解

粒子脚本允许实例化地在自己的脚本代码中定义粒子系统,而不必在源代码中进行设置,可以在做任何修改对哦能得到快速的回应,脚本里定义的粒子系统被用作模版,并且多个实际的系统可以在运行时从脚本里被创建。 ...
  • changbaolong
  • changbaolong
  • 2013年08月21日 22:32
  • 2670
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OGRE的启动
举报原因:
原因补充:

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