【发布时间】:2011-02-22 05:29:37
【问题描述】:
当您在文本编辑器中按住某个键时,字符会出现,然后您会在出现字符流之前短暂停顿。这是补偿某些人比其他人按住键的时间更长/暂停思考等的系统。
我的问题是当我在 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 中以不同方式捕获输入?
【问题讨论】:
标签: c# keyboard directx slimdx raw-input