使用缓冲数据的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