当您在文本编辑器中按住某个键时,该字符会出现,然后在出现字符流之前会出现短暂的停顿。这是补偿某些人比其他人按住键的时间更长/暂停思考等的系统。
我的问题是当我在 SlimDX Direct3D11 应用程序中按住移动键时会发生这种情况。它不会移动相机,而是移动 1 个单位,暂停,然后流畅地移动。
我使用以下代码来捕获键盘数据:
private void InitializeKeyboard()
{
INPUT.Device.RegisterDevice(SlimDX.Multimedia.UsagePage.Generic, SlimDX.Multimedia.UsageId.Keyboard, INPUT.DeviceFlags.None);
INPUT.Device.KeyboardInput += new EventHandler<KeyboardInputEventArgs>(KeyboardInput);
}
void KeyboardInput(object sender, KeyboardInputEventArgs e)
{
if (e.Key == Keys.W) camera.MoveForward(0.3f);
if (e.Key == Keys.S) camera.MoveForward(-0.3f);
}
我使用一个类似的系统来捕捉鼠标,鼠标的移动工作流畅且响应迅速,所以问题必须出在键盘正在执行的自动更正中,以防止双击。有人知道如何阻止硬件这样做吗?或者,如果您应该在 DirectX 11 中以不同方式捕获输入?