Ogre1.8.1 Basic Tutorial 6 - The Ogre Startup Sequence
原文地址: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:
mRoot->initialise( false ); // 初始化RenderSystem,第一个参数传递false来通知Ogre无须为我们自动创建RenderWindow HWND hWnd = ; // 获取我们自己创建的窗口句柄
NameValuePairList misc;
misc["externalWindowHandle"] = StringConverter::toString( (int)hWnd );
RenderWindow *win = mRoot->createRenderWindow( "Main RenderWindow", , , 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初始化鼠标的代码中,我加入了两行代码,将鼠标设置为非独占模式:
OIS::ParamList paramList;
paramList.insert( std::make_pair(std::string("WINDOW"), strWindowHandle.str()) );
paramList.insert( std::make_pair(std::string("w32_mouse"), std::string("DISCL_FOREGROUND")) );
paramList.insert( std::make_pair(std::string("w32_mouse"), std::string("DISCL_NONEXCLUSIVE")) ); m_pInputManager = OIS::InputManager::createInputSystem( paramList );
m_pMouse = dynamic_cast<OIS::Mouse*>( m_pInputManager->createInputObject(OIS::OISMouse, false) );
这样就可以看到光标了。
Ogre1.8.1 Basic Tutorial 6 - The Ogre Startup Sequence的更多相关文章
- Ogre学习笔记Basic Tutorial 前四课总结
转自:http://blog.csdn.net/yanonsoftware/article/details/1011195 OGRE Homepage:http://www.ogre3d.org/ ...
- [转]Open Data Protocol (OData) Basic Tutorial
本文转自:http://www.odata.org/getting-started/basic-tutorial/ Basic Tutorial The Open Data Protocol (ODa ...
- [cmake] Basic Tutorial
Basic Project The most basic porject is an executable built from source code file. CMakeLists.txt cm ...
- OGRE启动过程详解(OGRE HelloWorld程序原理解析)
本文介绍 OGRE 3D 1.9 程序的启动过程,即从程序启动到3D图形呈现,背后有哪些OGRE相关的代码被执行.会涉及的OGRE类包括: Root RenderSystem RenderWindow ...
- Ogre学习教程:Ogre1.8.1+VS2010环境配置(转)
http://blog.csdn.net/yangtrees/article/details/8724120 http://blog.csdn.net/cll611/article/details/8 ...
- 【转载】Ogre:Beginner Tutorial 1: SceneNode, Entity,和SceneManager 结构
原文:Beginner Tutorial 1: SceneNode, Entity,和SceneManager 结构 先决条件 这个教程假设你有C++编程的基础并且可以配置并编译OGRE应用程序 ...
- OGRE 1.9 的第一个程序(OGRE HelloWorld程序)
平台:win7, VS2010 先看运行结果吧: 1. 安装OGRE 下载OGRE SDK 1.9,解压,放在你喜欢的地方,在OGRE SDK文件加下创建“OGRE_HOME.bat.bat”文本文件 ...
- Mule ESB-Content-Based Routing Tutorial(2)
承接 Mule ESB-Content-Based Routing Tutorial(1) 五.执行应用程序 完毕创建,配置.并保存你的新的应用程序,您就能够在嵌入Mule的server上执行(包含 ...
- Deep Learning Tutorial - Classifying MNIST digits using Logistic Regression
Deep Learning Tutorial 由 Montreal大学的LISA实验室所作,基于Theano的深度学习材料.Theano是一个python库,使得写深度模型更容易些,也可以在GPU上训 ...
随机推荐
- sql中with as的用法练习
在工作中经常看到有人使用with as,查询很顺畅,也很快,很好奇,在网上也有不少资料,看了大神的文章,也练习一下. 首先给出两位位大神文章的链接,介绍十分详细:http://www.cnblogs. ...
- 02-线性结构3 Pop Sequence
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...
- 判断Check复选框是否选中
<div id="prm_div" style="font-size: 12px;" align="left"> <for ...
- Collaborative filtering
Collaborative filtering, 即协同过滤,是一种新颖的技术.最早于1989年就提出来了,直到21世纪才得到产业性的应用.应用上的代表在国外有Amazon.com,Last. ...
- JVM学习总结四——内存分配策略
之前几篇我们介绍了jvm的内存模型以及垃圾回收机制,而本篇我们将介绍几个JVM中对象在分配内存是应该遵循的策略.毕竟,想要去优化程序,不仅要考虑垃圾回收的过程,还要从对象内存分配的角度减少gc的代价. ...
- IOS中GPS定位偏移纠正(适用于Google地图)
在这个神奇的国度里,我们总得学习一些有中国特色的东东,例如“火星坐标”.也许有人还不知道这是什么玩意,我就简要介绍一下吧. 如果你有带GPS模块的智能手机,打开定位功能,然后访问Google ...
- 前端开发规范之html编码规范
原则1.规范 .保证您的代码规范,趋html5,远xhtml,保证结构表现行为相互分离.2.简洁.保证代码的最简化,避免多余的空格.空行,保持代码的语义化,尽量使用具有语义的元素,避免使用样式属性和行 ...
- 如何在Quartus II中设置Virtual pin
为了验证FPGA工程中的某个模块的功能和时序的正确性,常常需要对其单独进行验证,但是这些模块通常都与内部的众多信号相连(如系统总线,中断信号线等),往往一个模块的对外接口引脚会多达几百个,对其单独仿真 ...
- 5个SQL核心
5个核心的SQL语句 1.SELECT -查询语句的逻辑处理顺序 5 SELECT <columnlist> 1 FROM <source objectlist> ...
- xml之基础了解
1.简介 1>什么XML语言(eXtensible Markup Language) 可扩展标记语言XML是SGML的子集,其目标是允许普通的SGML在Web上以目前HTML的方式被服务.接受和 ...