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上训 ...
随机推荐
- SHOW SLAVE STATUS几个常见参数
--显示当前读取的Master节点二进制日志文件和文件位置,对应线程I/O thread Master_Log_File: mysql-bin.000011 Read_Master_Log_Pos: ...
- Java当中的I/O的字节流
I/O是input/output的缩写,即输入输出系统. I/O操作即从数据源中读取数据,以及将数据写入到数据目的地中.读的来源(如文件.键盘.网络)和写的目的地(如文件.屏幕.网络)分为很多种. 数 ...
- eclipse java 空心J文件的回复
eclipse中的空心J的java文件,表示当前文件不包含在项目中进行编译,而仅仅是当做资源存在项目中. 解决方案如下: 1.鼠标右击当前空心j文件,-->build path-->inc ...
- 直播源格式转换教程——rtmp/rtsp/http/m3u8!!
之前寻找直播源,发现好多rtmp开头的,或者是rtsp开头的,但是ATV里面的个人链接是支持m3u8格式的.怎么办?小编发现了几个规律,网友可作参考.现在流行的直播地址差不多就这几种需要说明的是并不是 ...
- linux 禁止指定账号ssh登陆
1 2 3 4 vim /etc/pam.d/sshd #在第一行添加以下代码 auth required pam_listfile.so item=user sense=de ...
- Libevent windows/linux下编译
1.windows下: 编译环境: windows xp sp3 + vs2010 (1) 解压libevent-2.0.21-stable.tar.gz到D:\libevent-2.0.21- ...
- The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
The ObjectContext instance has been disposed and can no longer be used for operations that require a ...
- visualgo 数据结构与算法可视化工具
推荐可视化数据结构与算法工具 http://zh.visualgo.net/
- c语言中static 用法总结(转)
惨痛教训: 假设在test.h中定义了一个static bool g_test=false; 若test1.c和test2.c都包含test.h,则test1.c和test2.c分别生成两份g_tes ...
- 软件工程实践小队Scrum Meeting
例会记录 时间:2013年10月20日星期日 Part 1 会议要点: 1. 小组讨论PM.Dev.Test的各自特点: 2. 小组讨论我们的项目网上教学问答系统的相关问题: 3.确定小组成员在第一轮 ...