本章节将介绍如何从用户直接获取输入数据,比如键盘,鼠标甚至手柄。将学习如何实现Direct输入。
主要是使用Direct输入API,或许你会疑惑为什么我们不使用Win32的API来获取用户输入,毕竟,它能够找到键盘上的哪一个值被按下,以及从鼠标甚至手柄获取输入数据,然而,Win32 API设计初衷是为键盘入口程序服务的,不是为需要速度的实时输入服务的。当从Win32 API获取输入时,它必须处理按键,将它们转为ascii并且对特殊的windows按键比如alt还会有许多额外的处理。对于游戏来说不需要如此多的处理,并且要记住的是,我们不能直到我们的消息队列为空才去渲染一帧。实际上若这样做会非常缓慢。另外一件事就是,Win32 API 只能够从3个按钮获取输入,x和y轴,和一个鼠标上的滚轮值。如今的鼠标的功能比这些都多。而Direct Input能够支持任意的设备,只要该设备使用了Direct Input所写的驱动就行。使用Direct Input,我们还可以使用强制反馈功能,也就是手柄能够从应用程序获得输入数据。
头和库文件
要使用direct input功能需要包含以下头和库文件:
#pragma comment (lib, "dinput8.lib")
#pragma comment (lib, "