使用缓冲数据的DirectInput来控制游戏

本文介绍了如何使用DirectInput的缓冲数据方式来避免游戏菜单中因长时间按键导致的误操作问题。通过创建DirectInput设备,设置数据格式和合作等级,以及配置缓冲区大小,可以实现对输入设备状态变化的精确控制。在游戏交互过程中,获取装置数据并检查DIDEVICEOBJECTDATA结构来判断按键状态。需要注意的是,缓冲数据会导致按键按压和释放时各产生一个消息,因此需正确处理这两个消息。
摘要由CSDN通过智能技术生成

使用缓冲数据的DirectInput来控制游戏 作者:蒋轶民   


 DirectInput结构的确是非常出色。因为在处理即时数据的优越性,它仍然是许多DirectX程序员的首选。
    DirectInput的优越性和丰富性给了我们更多的选择和自由。它提供了即时数据(immediate data)和缓冲数据(buffered data)的方式使我们可以完全地抛弃windows消息队列。不过我们在使用DirectInput的时候遇到了一些问题。
    试想一下,在游戏的菜单界面上,使用DirectInput的即时数据,如果我们在点击鼠标的时候,程序就会一直地响应鼠标的按键,于是当我们在进行菜单项选择的时候,如果手没有及时松开,会出现按错的现象。那么这个时候,使用缓冲数据的DirectInput就显得很重要了。
    那么怎样才能设置缓冲数据的DirectInput呢?我在看了很多书(包括《游戏开发大全(Game Programming All in One)》《Microsoft DirectX SDK (April 2006)》)后,终于在自己的机器上试验成功了。下面我就实现这个功能给大家分享分享。 

1、创建DirectInput。使用DirectInput8Create( hInst, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&g_pInputObject, NULL )。

2、创建DirecInput设备。使用g_pInputObject->CreateDevice( GUID_SysKeyboard, &g_pInputDevice, NULL )。
3、设置数据格式。使用g_pInput

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值