OIS 缓冲与非缓冲输入方式
来源:互联网 发布:linux新加硬盘不显示 编辑:程序博客网 时间:2024/04/30 03:55
网上有很多人说过此类问题,可我总觉得有些说法不太合适。于是就自己试验了一下。
下面是笔记:
1. 只有缓冲IO才能用于KeyListener/MouseListener,
也就是Keyboard::setEventCallback()设置的监听器。
2. 因为缓冲IO时,检测的是按键状态,所以就有按下和释放两个事件。
3. 把IO事件和帧渲染分开,利于管理,但是容易造成冗余。
可以把MyListenerData设成须共享数据的监听器(如Frame|Key|MouseListener)的友元,在MyListenerData里封装属性。
4.实现类:
MyListenerData: 跟控制属性相关的数据(注意这是控制信息,并非实体信息)
MyKeyListener: 跟按键控制相关的操作
MyMouseListener: 跟鼠标控制相关的操作
MyFrameListener: 跟每一帧渲染相关的操作
如果把键盘设为非缓冲,那么Keyboard::setEventCallback()设置的监听器就不灵了。同样的,如果把鼠标设置为非缓冲,那么鼠标的回调函数也会失灵。这样只能在真渲染中进行相关控制操作,这易导致类的设计不够清晰。
因为键鼠监听器总是检测按键状态,所以在移动、旋转等过程变化以及按键切换等瞬时变化上和非缓冲及帧渲染事件处理上有所不同。所以,才导致键鼠监听器总是有按下和释放两个事件处理,这就是为了改变状态。而不像frame事件中那样只考虑按键是否按下就可以了。正因为此,才有了frameStated/frameRenderingQueued/frameEnded这三中不同的时间态去做处理。比如,一个变量要在鼠标移动时为1,否则为0,就可以再mouseMoved中设置1,frameRendingQueued中做处理,到frameEnded中设置为0,因为不知道下一帧鼠标是不是还在移动啊。
- OIS 缓冲与非缓冲输入方式
- 缓冲与非缓冲
- 缓冲与非缓冲
- OGRE+OIS 帧监听FrameListener、非缓冲输入和缓冲输入
- OGRE+OIS 帧监听FrameListener、非缓冲输入和缓冲输入
- 在Ogre中使用OIS的两种模式(非缓冲输入和缓冲输入)
- OGRE+OIS 帧监听FrameListener、非缓冲输入和缓冲输入
- ogre中缓冲(buffered)输入方式和非缓冲(unbuffered)输入有什么区别?
- Linux 文件IO: 缓冲与非缓冲
- c/c++ 缓冲输入和非缓冲输入
- c/c++ 缓冲输入和非缓冲输入
- Linux 非缓冲I/O与缓冲I/O
- IO_缓冲和非缓冲
- MPI_allreduce如何指定输入缓冲与输出缓冲相同
- 一个例子叫你理解缓冲输入与非缓冲输入,以及流的概念:论read与fget open与fopen的区别
- 清空输入缓冲 与 fflush
- 清空输入缓冲 与 fflush
- (6) 帧监听与无缓冲输入
- ASP.net c# 日期转化[转]
- Win32 OpenGL编程(6) 踏入3D世界
- uninitialized_fill与fill的区别
- 菜鸟学习OGRE和天龙八部之九: AXP档案的直接载入搞定
- Ogre3D 实现角色换装
- OIS 缓冲与非缓冲输入方式
- java 实现文件下载的时候,避免浏览器自动打开文件,而是出现另存为对话框
- white paper___sun cloud(2)
- 云测试
- Advanced English Note—AD030602.wma
- pku 2978 Colored stones(枚举+DP)
- pku 2348 Euclid's Game(博弈)
- 程序员必读之经典
- 一生中任何人都无能为力的十件事情