DirectInput的立即模式与缓冲模式

来自一个Python小白写的DNF手搓脚本 DNF快捷手搓脚本 阅读详情

键盘为了保证实时性,一定要用立即模式!
鼠标可以使用缓冲的,这样可以得到一个连贯的输入状态。
DirectInput 设备以立即模式获取输入信息,例如,如果键盘按键的速度非常快,那么在DirectInput读取数据那一刻之前的案件数据将不能被DirectInput设备读取。与立即模式相对的是缓冲模式,此时设备输入数据即将被放进缓冲区中供DirectInput设备使用。对于游戏开发来说,通常依照键盘和游戏杆的各种按键执行画面的更新,因此,利用DirectInput设备的立即模式来读取它们的输入数据较为适宜。相反在一个画面中鼠标的移动式连贯的,为了在游戏程序可多次连续的鼠标移动量,就需要采用DirectInput的缓冲模式来读取鼠标的输入。

看看Ogre提供的ExampleFrameListener的构造函数声明:
ExampleFrameListener(
                          RenderWindow* win, 
                          Camera* cam, 
                          bool bufferedKeys = false, 
                          bool bufferedMouse = false,
                          bool bufferedJoy = false
)
Keyboard,mouse,joystick默认都是立即模式。
假如需要要对keyboard采取立即模式,对mouse采取缓冲模式,可以这样新建ExampleFrameListener对象,new ExampleFrameListenr(win, cam, false, true);
然后还需要实现一些鼠标的响应函数,例如mousePressed,mouseMouved,mouseReleased.
最终在ExampleFrameListener的构造函数中创建keyboard与mouse的代码如下:
//Create all devices (We only catch joystick exceptions here, as, most people have Key/Mouse)
mKeyboard = static_cast<OIS::Keyboard*>
                      (mInputManager->createInputObject( OIS::OISKeyboard, bufferedKeys ));
mMouse = static_cast<OIS::Mouse*>
                      (mInputManager->createInputObject( OIS::OISMouse, bufferedMouse ));
try {
mJoy = static_cast<OIS::JoyStick*>
                      (mInputManager->createInputObject( OIS::OISJoyStick, bufferedJoy ));
} catch(...) {
        mJoy = 0;
}
代码采取异常方式创建Joy stick很优美!
另有一篇:

DirectInput 键盘编程入门 DirectInput 键盘编程入门 游戏编程可不仅仅是图形程序的开发工作,实际上包含了许多方面,本文所要讲述的就是关于如何使用 DirectInput 来对键盘编程的问题。 在 DOS 时代,我们一般都习惯于接管键盘中断来加入自己的处理代码。但这一套生存方式在万恶的 Windows 社会下是行不通的,我们只能靠领 API 或者 DirectInput 的救济金过活。 在 Windows 的 API 中,有一个 GetAsyncKeyState() 的函数可以返回一个指定键的当前状态是按下还是松开。这个函数 阅读详情

相关推荐

pydirectinput:使用直接输入的Windows的Python鼠标和键盘输入自动化

PyDirectInput 该库旨在通过使用DirectInput扫描代码和更现代的SendInput()win32函数来复制PyAutoGUI鼠标和键盘输入的功能。 PyAutoGUI使用虚拟键码(VK)以及不赞成使用的mouse_event()和keybd_event()win32函数。 您可能会发现PyAutoGUI在某些应用程序中不起作用,特别是在视频游戏和其他依赖DirectX的软件中。 如果您遇到这种情况,请尝试一下该库! pip install pydirectinput 该软件包旨在PyAutoGUI结合使用。 您可以继续使用PyAutoGUI的所有很酷的功能,并简单地用PyDirectInput代替无效的输入。 功能接口相同,但是此程序包可能未实现所有可选参数和功能。 想看到缺少的功能吗? 为什么不自己尝试一下呢! 我欢迎所有提出要求,并很高兴您合作以提出完善

python 游戏按键精灵 PyDirectInput介绍

前言: 在python关于按键精灵得操作中常用的有PyAutoGUI,但在使用的过程中,针对一些游戏就直接失灵了,特别是一些以DirectX来开发的游戏或软件。我通过收索相关资料了解到之所以会这样,是因为PyAutoGUI使用的是Virtual Key Codes (VKs),也就是模拟按键码。而对于这些游戏或软件来说需要使用Directinput,这样就需要直接从设备中获取数据,而不是模拟的。而这个由github上Ben Johnson开发的PyDirectInput库就是针对此而设计的。 库安装..

lylelo的博客 2万+

python模拟鼠标点击和键盘输入的操作

所有代码都是网上百度出来的,通过个人实践找到适合自己的。 采用的python 库是 pymouse、pykeyboard 安装时直接pip安装的,pip install PyUserInput 安装不成功的可以参照http://www.lfd.uci.edu/~gohlke/pythonlibs/这个地址,内容很全 实现了一个最简单的输入密码,enter进入的登录过程 如果想遍历,可以使用itertools 包,很有用,具体用法这里不介绍了。 · 鼠标点击 有m.click(x, y, button, n)  — 点击,想x,y坐标,button:-1表示左键,-2表示右键,n:默认1次,2

Python制作模拟按键摘录,pyautogui库及该库在某些窗口不生效的问题部分解决措施(PyDirectInput库、winio驱动级模拟)

因此,为了解决我们遇到的问题,我们只需要让 PyAutoGUI 使用 DirectInput Windows API,而不是它当前使用的 API。例如,当设置confidence为0.5时,函数将会搜索给定图像相匹配的区域,并且只有当置信度大于等于0.5时,函数才会返回该区域的位置。因此,confidence的值可以影响函数的性能和准确性,取决于您所需要的搜索结果的精度和速度。PyAutoGUI 源代码,并且可以参考我已经完成的工作,所以它应该只是大量的复制/粘贴并填写空白类型的东西。

Salvator_的博客 1万+

游戏手柄directinput编程

博文包括5部分 1.directInput简介 2.使用DirectInput的5个步骤 3.DirectInput相关C++例程 4. little tips(IID,立即模式缓冲模式) 5.如何快速熟悉一门技术,并学会去传播 1. directInput简介   DirectInput和其他DirectX组成部分一样,是通过硬件抽象层(HAL)和硬件仿真层...

aixuehua981219的博客 1334

DirectInput 编程入门

  游戏编程可不仅仅是图形程序的开发工作,实际上包含了许多方面,本文所要讲述的就是关于如何使用 DirectInput 来对键盘编程的问题。  在 DOS 时代,我们一般都习惯于接管键盘中断来加入自己的处理代码。但这一套生存方式在万恶的 Windows 社会下是行不通的,我们只能靠领 API 或者 DirectInput 的救济金过活。  在 Windows 的 API 中,有一个 GetAsyn

废弃blog 2666

DirectInput编程基础 - 简介

导读:   DirectInput编程基础 - 简介 出 处: 中国游戏开发者   [ 2001-09-09] 作 者:   目 录   1.1 DirectInput概念   1.2 设置DirectInput   1.3 列举设备   1.4 设置设备   1.5 取得输入数据   绪言   输入相对于图形和声音而言从未成为游戏开发中的非常重要的论题。读取键盘按键、鼠标移动和游戏杆位置

hillpang的专栏 4158

【ZT】DirectInput 鼠标编程入门

2007年10月12日 01:49:00 作者:樊一鹏前回同大家简单介绍了如何用 DirectInput 来进行键盘编程,本回所要讲述的就该是关于如何使用 DirectInput 来对另一个非常重要的输入设备----鼠标的编程问题。鼠标的编程同键盘编程的过程是非常相似的,有了上次的基础,你很快就能看出两者在形式上其实完全是大同小异的。DIRECTINPUT 的初始化同前面讲

秦梦瑶的专栏 968

(转)DirectInput 键盘编程入门

 游戏编程可不仅仅是图形程序的开发工作,实际上包含了许多方面,本文所要讲述的就是关于如何使用 DirectInput 来对键盘编程的问题。  在 DOS 时代,我们一般都习惯于接管键盘中断来加入自己的处理代码。但这一套生存方式在万恶的 Windows 社会下是行不通的,我们只能靠领 API 或者 DirectInput 的救济金过活。  在 Windows 的 API 中,有一个 GetAsync...

weixin_33894640的博客 110

DELPHI游戏开发教程

DirectInput 键盘编程入门   游戏编程可不仅仅是图形程序的开发工作,实际上包含了许多方面,本文所要讲述的就是关于如何使用 DirectInput 来对键盘编程的问题。  在 DOS 时代,我们一般都习惯于接管键盘中断来加入自己的处理代码。但这一套生存方式在万恶的 Windows 社会下是行不通的,我们只能靠领 API 或者 DirectInput 的救济金过活。  在

梦开始的地方 2225

DirectInput里的键盘鼠标的应用

  设计一个PC游戏,键盘鼠标的输入是绝不能少。Windows也提供了诸如WM_LBUTTONDOWN、WM_RBUTTONUP等鼠标消息以及WM_KEYDOWN、WM_KEYUP等键盘输入消息。但是DirectInput中仍然提供了对鼠标键盘的支持,其原因就是DirectInput提供一个更直接更快捷的对输入设备的访问方法。就象我们在DOS下直接接管键盘中断,而不是去用什么讨厌的INT16来处理

废弃blog 3894
上一篇: C语言深入浅出可变参数函数的使用技巧
下一篇: BIGWORLD问题集
yacper
博客等级 码龄19年 83粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值