原文地址:http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Basic+Tutorial+6&structure=Tutorials

1. Ogre的基本生命周期如下:

(1) 创建Root对象

(2) 定义Ogre将要使用的资源

(3) 选择并且设置渲染系统(就是DirectX, OpenGL等等)

(4) 创建渲染窗口

(5) 初始化将要使用的资源

(6) 使用资源创建一个场景

(7) 设置第三方库和插件

(8) 创建任意数量的帧监听(frame listeners)

(9) 启动渲染循环

Note:第一步到第四步应该按顺序执行。第五步和第六步如果你喜欢也可以放在之后执行。第七步和第八步可以在第五步和第六步之前执行,但是不应该在第四步之前执行。此外,帧监听或第三方库在资源未初始化并且场景未创建之前不能访问任何游戏相关的资源(例如摄像机,实体对象等)。

2. 如果你喜欢可以自由的使用任意的解析工具和配置文件格式来替代Ogre的ConfigFile解析工具,这对于加载资源没有影响,只要保证把解析的资源添加到ResourceGroupManager由其来加载就可以了。

3. 可以使用Root::getAvailableRenderers()来获取所有可用的RenderSystems。一旦获取到一个RenderSystem,就可以使用RenderSystem::getConfigOptions来获取所有可用的选项,下图展示了Direct3D9 Rendering Subsystem所具有的可用选项:

4. 可以通过Root::initialize()函数并将第一个参数设置为true来通知Ogre帮你自动创建RenderWindow。另外也可以使用win32 API, wxWidgets或任意的GUI系统来自己创建窗口,然后取得窗口句柄,之后使用NameValuePairList并将窗口句柄赋值给"externalWindowHandle",最后调用Root::CreateRenderWindow()函数来创建RenderWindow:

1 mRoot->initialise( false ); // 初始化RenderSystem,第一个参数传递false来通知Ogre无须为我们自动创建RenderWindow
2
3 HWND hWnd = 0; // 获取我们自己创建的窗口句柄
4 NameValuePairList misc;
5 misc["externalWindowHandle"] = StringConverter::toString( (int)hWnd );
6 RenderWindow *win = mRoot->createRenderWindow( "Main RenderWindow", 800, 600, false, &misc );

5. 在初始化资源之前,应该设置纹理使用的mipmap数量,要注意必须在初始化资源之前设置,否则不会起效。

6. 在使用OIS初始化鼠标之后,会发现窗口的光标消失了。在OIS的初始化源代码中,我们可以发现鼠标被设置为独占模式:

根据MSDN,可以发现如下说明:If the system mouse is acquired in exclusive mode, the pointer is removed from the screen until the device is unacquired。因此,在独占模式下,光标是看不到的。所以,在使用OIS初始化鼠标的代码中,我加入了两行代码,将鼠标设置为非独占模式:

1 OIS::ParamList paramList;
2 paramList.insert( std::make_pair(std::string("WINDOW"), strWindowHandle.str()) );
3 paramList.insert( std::make_pair(std::string("w32_mouse"), std::string("DISCL_FOREGROUND")) );
4 paramList.insert( std::make_pair(std::string("w32_mouse"), std::string("DISCL_NONEXCLUSIVE")) );
5
6 m_pInputManager = OIS::InputManager::createInputSystem( paramList );
7 m_pMouse = dynamic_cast<OIS::Mouse*>( m_pInputManager->createInputObject(OIS::OISMouse, false) );

这样就可以看到光标了。

转载于:https://www.cnblogs.com/twjcnblog/p/3171259.html

Ogre1.8.1 Basic Tutorial 6 - The Ogre Startup Sequence相关推荐

  1. Ogre学习笔记Basic Tutorial 前四课总结

    转自:http://blog.csdn.net/yanonsoftware/article/details/1011195 OGRE Homepage:http://www.ogre3d.org/   ...

  2. [转]Open Data Protocol (OData) Basic Tutorial

    本文转自:http://www.odata.org/getting-started/basic-tutorial/ Basic Tutorial The Open Data Protocol (ODa ...

  3. GStreamer官方教程系列——Basic tutorial 5: GUI toolkit integration

    GStreamer官方教程系列 Basic tutorial 5: GUI toolkit integration 原文:https://gstreamer.freedesktop.org/docum ...

  4. GStreamer Tutorial 中文翻译:Basic tutorial 3: Dynamic pipelines

    GStreamer Tutorial 3中文翻译 文章目录 GStreamer Tutorial 3中文翻译 前言 [Basic tutorial 3: Dynamic pipelines](http ...

  5. OGRE 入门 二、Basic Tutorial 1 : An introduction to the most basic Ogre constructs

    1. 下载源代码及脚本 这里有一个'Convenient All-In-One' 版的框架. 2. 创建场景 解压clean_ogre_cmake_project.zip,修改TutorialAppl ...

  6. Ogre学习记录(一)-启动流程

    Ogre给的教程框架还是很友好的,继承其所给的BaseApplication类,只用重写createScene函数,就可以渲染出mesh模型了.但是为了更好的学习,当然要搞清楚BaseAplicati ...

  7. ogre android 编译,cmake 编译 ogre3D(version1.9) for android

    用cmake 编译 ogre3D(version1.9) for android. ogre3D源码中已经有对ogre3D编译为android库的CMakelists文件.我们要做的就是用cmake将 ...

  8. Ogre3D基础教程三

    文档:教程:基础教程:基础教程三 出自Ogre3D开放资源地带 跳转到: 导航, 搜索 目录 [隐藏] 1 先决条件 2 简介 3 从这里开始 4 根对象和场景管理器的创建 4.1 根对象 4.2 场 ...

  9. ogre3d 多系统配置

    参考ogre wiki: 获取执行路径--GetExecutablePath 示例程序--Basic+Ogre+Application 基础教程6-Basic+Tutorial+6 MAC Mac o ...

最新文章

  1. 同事给我埋了个坑:Insert into select语句把生产服务器炸了
  2. 64位jdk连接32位的mysql_在64位客户端使用32位的ODBC配置
  3. 图论算法》关于SPFA和Dijkstra算法的两三事
  4. LeetCode 438. 找到字符串中所有字母异位词(滑动窗口)
  5. express使用JWT和httpOnly cookie进行安全验证
  6. 今年后,再见Excel,你好python
  7. PostgreSQL的时间/日期函数使用
  8. gtest hook 示例
  9. java实现多个数字求和_图形化界面
  10. 中国优秀软件架构师感悟录
  11. Google的黑科技你知道那些?
  12. 快速排序与冒泡排序的效率对比
  13. python怎么取共轭_python实现共轭梯度法
  14. QT5.9用自定义字体修改qlabel字体、大小以及颜色
  15. 将扣出的章加入wps里面
  16. micropython 常量_MicroPython添加Module(二)
  17. Java能够做哪些工作?这7个Java开发方向你知道几个?
  18. 新浪微博开发之微博主页的实现
  19. mpp的文件是干嘛用的?
  20. 【PDF报表】Jasperreports+jaspersoft studio快速入门

热门文章

  1. Python继承范例
  2. 迅捷cad_迅捷元组
  3. Spring @Repository批注
  4. Python封装的获取文件目录的函数
  5. 运行Eclipse出错:Failed to load the JNI shared library
  6. React server rendering —— 网易美学主站同构实录
  7. 【Ian Goodfellow 强推】GAN 进展跟踪 10 大论文(附下载)
  8. 问答项目---登陆验证码点击切换及异步验证验证码
  9. Java map遍历
  10. 【ZOJ】3380 Patchouli's Spell Cards