`

OIS输入

    博客分类:
  • OIS
 
阅读更多

OIS并不是ogre的一部分,它是一个独立的轻量级的开源输入框架,想使用它需要引入一个类似OIS_d.dll的动态库(也可以自己编译源码获取)。

InputManager :作为OIS的管理者是得到所有输入设备的入口

Cpp代码   收藏代码
  1. InputManager *     g_InputManager = 0;         //输入系统管理器  
  2. g_InputManager = InputManager::createInputSystem(g_hWnd);  

 这里需要注意得的是必须传入一个窗口句柄进去,明确当前InputManager是为谁服务的。

1.非缓冲输入: 这种模式最大的特点就是没有特点(没有对输入控制对象进行特殊处理),这种模式下OIS基本上只是取到了一个创建和管理输入设备的作用,比较原始。

Cpp代码   收藏代码
  1. OIS::Keyboard* mKeyboard;  
  2. OIS::Mouse*     mMouse ;  
  3.   
  4. mKeyboard = static_cast<OIS::Keyboard*>(mInputManager->createInputObject(OIS::OISKeyboard, false));  
  5. mMouse = static_cast<OIS::Mouse*>(mInputManager->createInputObject(OIS::OISMouse, false));  

 第二个参数为false即为非缓冲输入。

在ogre中使用:

Cpp代码   收藏代码
  1. bool frameStarted(const FrameEvent& evt)  
  2. {  
  3. mKeyboard->capture();  
  4. mMouse->capture();  
  5. if(mKeyboard->isKeyDown(OIS::XXXX))  // 需要通过这种方式直接调用判断处理  
  6. {  
  7. }  
  8. }  

2.缓冲输入 :OIS通过回调的方式,让代码看起来更加整洁,除此之外或许还做了其他的事情。

Java代码   收藏代码
  1. OIS::Object* obj = mInputMgr->createInputObject(OIS::OISKeyboard, true);  
  2. mKeyboard = static_cast<OIS::Keyboard*>(obj);  
  3. mMouse = static_cast<OIS::Mouse*>(mInputMgr->createInputObject(OIS::OISMouse, true));  
  4.   
  5. mKeyboard->setEventCallback(this);  
  6. mMouse->setEventCallback(this);  

 除第二个参数为true以外,每个对象还需要通过回调函数获取一个事件处理对象,针对不同的输入设备,事件处理对象的类型不同。

OIS::KeyListener

bool keyPressed(const OIS::KeyEvent &arg)

bool keyReleased(const OIS::KeyEvent &arg)

OIS::MouseListener

bool mouseMoved(const OIS::MouseEvent &arg)

bool mousePressed(const OIS::MouseEvent &arg, OIS::MouseButtonID id)

bool mouseReleased(const OIS::MouseEvent &arg, OIS::MouseButtonID id)

ogre里面使用:

Java代码   收藏代码
  1. bool frameStarted(const FrameEvent& evt)  
  2. {  
  3. mKeyboard->capture();  
  4. mMouse->capture();  
  5. }  

非缓冲输入与缓冲输入的区别:非缓冲输入可以相应鼠标或键盘持续按下的事件。

分享到:
评论

相关推荐

    OIS Object Oriented Input System OGRE例子中用的输入系统

    Object Oriented Input System (OIS) is meant to be a cross platform, simple solution for using all kinds of Input Devices (KeyBoards, Mice, Joysticks, etc) and feedback devices (e.g. forcefeedback). ...

    OIS:官方的OIS存储库。 面向对象的输入系统

    OIS:面向对象的输入系统 跨平台面向对象的输入库系统。 旨在非常健壮并与许多系统和操作系统兼容。 Linux 依存关系:X11 要构建和安装: cmake -H. -B./build cd ./build make make install 默认情况下, ...

    ois:包含在Team Computing Olympics期间分配的编程任务的存储库

    ois 该存储库包含在Team Computing Olympics期间分配的调度任务。 资料夹结构 文件夹结构为&lt;anno&gt;/&lt;gara&gt;/&lt;nome&gt; ,其中: 是OIS版本决赛的年份(例如,如果是2015年2月23日进行决赛的OIS,则为2015年)。 是实践...

    ois2:用于修复ÕIS2的浏览器插件

    ois2 浏览器插件,用于修复主要与SIS2和其他一些站点有关的问题。要解决的问题[修复]繁琐的登录过程(3次单击) [固定]固定会话超时[已修复?]没有主题选择,没有黑暗模式注册时不显示实验时间缺少按时间过滤课程的...

    使用ogre做的练练看游戏

    使用oger做的练练看游戏,里面用到了CEGUI做界面,FMOD播放声音,OIS控制输入,免费给大家分享,有任何问题请邮件: xieaiwanli@hotmail.com

    OGRE基础教学文档

    OIS的带缓冲的输入 基础教程一 场景管理器,场景节点和实体 基础教程二 摄影机,阴影和光照处理 基础教程三 天空,地面和雾化处理 基础教程四 帧监听器和非缓冲输入 基础教程五 缓冲输入 基础教程六 ...

    java项目超市

    获取输入流 try { InputStream is = socket.getInputStream(); ObjectInputStream ois =new ObjectInputStream(is); // 2.获取输出流 OutputStream os = socket.getOutputStream(); ...

    sniis:简单的非侵入式输入系统

    基于OIS( ) 从那里扩展了XInput补丁 扩展为在Windows上使用RawInput 为什么看起来像这样: 我需要一个不自行处理消息的输入系统 我需要多个鼠标/键盘的支持 我需要重新映射事件 我不喜欢...

    ois_v1-3.tar.gz_android开发_C/C++_

    跨平台的 输入管理 鼠标,键盘管理,win32

    lxgui:Lua和XML图形用户界面-开源

    注意:该项目已迁移到github:https://github.com/cschreib/lxgui lxgui是一个... 提供了用于OpenGL(用于图形)以及OIS和SFML(用于输入)的前端。 SFML图形前端在项目中。 文档:http://lxgui.sourceforge.net/docs

    快速全局刚度矩阵装配:以快速方式从单元刚度矩阵生成全局刚度矩阵-matlab开发

    输入: --------- Elements:一个结构包含 Elements{i}.K 和 Elements{i}.DOFs(第 i 个元素的刚度和自由度)。 输出: --------- K:稀疏全局刚度矩阵 参考----------------- Cuvelier,François,Caroline ...

    Mosquito-开源

    Mosquito是一种输入系统,它位于SDL或OIS之上,用于处理物理输入源到程序员可以使用的虚拟游戏手柄和鼠标的映射。 它支持通过配置文件,代码和游戏内重新映射进行配置。

    JetaShot!-开源

    JetaShot! 是计划/预Alpha流程中zlib / libpng许可下的跨平台Deathmatch Shooter,到目前为止,使用Ogre3D(www.ogre3d.org)作为渲染引擎,并使用OIS作为输入系统。 松鼠和OpenAL正在讨论中。

    数据融合matlab代码-pytorch-HED:HED在pytorch中的实现

    输入图像 dsn1 dsn2 dsn3 dsn4 dsn5 融合输出(dsn6) 在BSDS500上 方法 ODS(融合/合并) OIS(融合/合并) AP(融合/合并) 我们的实施 0.78731 / 0.78280 0.80623 / 0.80356 0.78632 / 0.83851 原始纸 0.782 / 0....

    超市管理系统数据库设计.doc

    办公信息系统(OIS),地理信息系统(GIS)等,越来越多新的应用领域采用数据库 存储和处理它们的信息资源。对于一个国家来说,数据库的建模,数据库信息量的大小 和使用频度的已成为衡量这个国家信息化程度的高低的...

    超市管理系统数据库设计(1).doc

    办公信息系统(OIS),地理信息系统(GIS)等,越来越多新的应用领域采用数据库 存储和处理它们的信息资源。对于一个国家来说,数据库的建模,数据库信息量的大小 和使用频度的已成为衡量这个国家信息化程度的高低的...

    超市管理系统数据库设计(3).doc

    办公信息系统(OIS),地理信息系统(GIS)等,越来越多新的应用领域采用数据库 存储和处理它们的信息资源。对于一个国家来说,数据库的建模,数据库信息量的大小 和使用频度的已成为衡量这个国家信息化程度的高低的...

    MPU-6050模块(三轴陀螺仪 + 三轴加速度) 有代码和原理图-电路方案

    光学稳像(OIS: Optical Image Stabilization) 行人导航器 “零触控”手势用户接口 姿势快捷方式 认证 市场智能型手机 平板装置设备 手持型游戏产品 3D遥控器 可携式导航设备 特征以数字输出6轴或9轴的旋转矩阵、...

Global site tag (gtag.js) - Google Analytics