博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ogre1.8.1 Basic Tutorial 6 - The Ogre Startup Sequence
阅读量:4517 次
发布时间:2019-06-08

本文共 1991 字,大约阅读时间需要 6 分钟。

原文地址:

 

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无须为我们自动创建RenderWindow2 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
( m_pInputManager->createInputObject(OIS::OISMouse, false) );

这样就可以看到光标了。

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

你可能感兴趣的文章
配置Synergy(Server : XP, client: Win7)
查看>>
Hadoop集群(第7期)_Eclipse开发环境设置
查看>>
Mysql 多表查询详解
查看>>
Ubuntu下tensorboard的使用
查看>>
门面模式
查看>>
Navicat Premium 10/12——破解激活
查看>>
【leetcode❤python】 290. Word Pattern
查看>>
Mysql备份还原数据库之mysqldump实例及参数详细说明 -转自http://www.cnblogs.com/xuejie/archive/2013/01/11/2856911.html...
查看>>
2013年10月13日学习:SQL通过命令语句来创建表
查看>>
剑指offer : 二维数组中的查找
查看>>
第三章 python基础
查看>>
java基础题
查看>>
[转]人人店短信插件开发
查看>>
[转]c# System.IO.Ports SerialPort Class
查看>>
14. 最长公共前缀
查看>>
Redis文档
查看>>
项目重构
查看>>
iOS 开发 证书总结 开发证书和生产证书的区别
查看>>
(笔试题)和一半的组合数
查看>>
leetcode--Algorithm--Array_Part 1 Easy- 566 Reshape the Matrix
查看>>