Ogre 学习笔记 (一) 处理用户的输入事件 OIS
2013-01-05 14:31
561 查看
Ogre 是使用 OIS 这个开源的输入框架来处理用户的键盘或鼠标事件的。
需要引入 OIS.h 头文件
#include "OIS.h"
int main()
{
Ogre::Root* root = new Ogre::Root("plugins_d.cfg");
// 创建我们的主窗口
Ogre::RenderWindow* window = root->initialise(true,"My Ogre Render Window");
// 首先需要创建一个InputManager对像的指针,它来负责管理所有的输入事件
// 使用 OIS::InputManager::createInputSystem(size_t winHandle); 方法。它需要用户提拱一个窗口的句柄,也就是告诉OIS。这个输入系统是为哪个窗口服务的。
size_t winHnd;
// 我们使用 RenderWindow 的 getCustomAttribute() 方法来得到这个主窗口的句柄.
window->getCustomAttribute("WINDOW",&winHnd);
// OK . 这样我们就可以创建一个做用为 window窗口的 输入系统了。
OIS::InputManager Input = OIS::InputManager::createInputSystem(winHnd);
// 使用这个输入 系统创建 键盘输入处理物体
OIS::Keyboard* keyboard = static_cast<OIS::Keyboard*>(Input->createInputObject(OIS::OISKeyboard,false));
// 创建鼠标处理物体
OIS::Mouse* mouse = static_cast<OIS::Mouse*>(Input->createInputObject(OIS::OISMouse,false));
// 渲染
while(!window->isClosed()) {
// 得到键盘事件,当按下 Escape 时,关闭主窗口.
keyboard->capture();
if (keyboard->isKeyDown(OIS::KC_ESCAPE))
window->destroy();
// 渲染一帧
root->renderOneFrame();
// 处理其它事件
Ogre::WindowEventUtilities::messagePump();
}
return 0;
}
注意: 你可以将N个 FrameListener 加入在Root中。 不过。。。。 你不能在每个 FrameStarted 的代码段里都加入 mouse->capture(). 这样。只会有一个 Listener的Mouse事件被运行。 你可需要在第一个加入 capture() 即可。 其它的Listener中 就不需要加了。
需要引入 OIS.h 头文件
#include "OIS.h"
int main()
{
Ogre::Root* root = new Ogre::Root("plugins_d.cfg");
// 创建我们的主窗口
Ogre::RenderWindow* window = root->initialise(true,"My Ogre Render Window");
// 首先需要创建一个InputManager对像的指针,它来负责管理所有的输入事件
// 使用 OIS::InputManager::createInputSystem(size_t winHandle); 方法。它需要用户提拱一个窗口的句柄,也就是告诉OIS。这个输入系统是为哪个窗口服务的。
size_t winHnd;
// 我们使用 RenderWindow 的 getCustomAttribute() 方法来得到这个主窗口的句柄.
window->getCustomAttribute("WINDOW",&winHnd);
// OK . 这样我们就可以创建一个做用为 window窗口的 输入系统了。
OIS::InputManager Input = OIS::InputManager::createInputSystem(winHnd);
// 使用这个输入 系统创建 键盘输入处理物体
OIS::Keyboard* keyboard = static_cast<OIS::Keyboard*>(Input->createInputObject(OIS::OISKeyboard,false));
// 创建鼠标处理物体
OIS::Mouse* mouse = static_cast<OIS::Mouse*>(Input->createInputObject(OIS::OISMouse,false));
// 渲染
while(!window->isClosed()) {
// 得到键盘事件,当按下 Escape 时,关闭主窗口.
keyboard->capture();
if (keyboard->isKeyDown(OIS::KC_ESCAPE))
window->destroy();
// 渲染一帧
root->renderOneFrame();
// 处理其它事件
Ogre::WindowEventUtilities::messagePump();
}
return 0;
}
注意: 你可以将N个 FrameListener 加入在Root中。 不过。。。。 你不能在每个 FrameStarted 的代码段里都加入 mouse->capture(). 这样。只会有一个 Listener的Mouse事件被运行。 你可需要在第一个加入 capture() 即可。 其它的Listener中 就不需要加了。
相关文章推荐
- Cocos2d-x学习笔记(五)CCLayer分析及输入事件处理(触摸、重力传感器、按键)
- Angular2学习笔记.3、通过模板调用Controller事件实现用户输入和显示,UserInput
- ogre 学习笔记系列(二)三大模块及事件处理
- Vue.js学习笔记——处理用户输入(逆转消息)
- Shell脚本学习笔记-用户输入处理
- WPF and Silverlight 学习笔记(十四):键盘输入、鼠标输入、焦点处理[转]
- 《Linux命令行与shell脚本》笔记--第13章:处理用户输入
- 黑马程序员之C#编程基础学习笔记:提示用户输入用户名,然后再提示输入密码,如果用户名是"admin"并且密码是“888888”,则提示正确,否则提示错误,如果用户名不是admin还提示用户用户名不存在
- C# Managed DirectX 学习笔记 一 (基础环境,画三角形,输入的处理)
- Linux学习-shell脚本编程基础之处理用户输入
- js学习笔记(十四)事件处理模型
- android 开发零起步学习笔记(十七):自定义android用户控件,使用回调函数实现自定义事件
- 第九章(1)-事件处理机制-学习笔记
- DVB-T2 学习笔记(02) - 输入处理
- Cocos2d-x学习笔记(二十七)之 获得用户虚拟键盘输入
- Silverlight3学习笔记2(对于Slider事件问题的处理)
- jQuery学习笔记(3)——事件处理
- 【Java学习笔记】51:FocusEvent,KeyEvent,WindowEvent事件的处理
- Java学习笔记(8) -Java GUI设计与事件处理
- 黑马程序员之C#编程基础学习笔记:提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于10岁,则告知不允许查看,如果大于等于10岁,则提示用户是否继续查看(yes,no),如果输入的是ye