5

整个程序太复杂,无法在这里展示。基本上,只要注意我最近的 git commit 中的绿色亮点。我对 DirectInput 很陌生,所以我希望我犯了几个错误。我已经非常仔细地研究了 MSDN 文档,所以我保证我不会只是把它扔在那里并在上面标记 FIX IT FOR ME。:)

基本上,我认为我已经将我的问题缩小到 Engine::getEvent 周围的代码区域(第 238 行+)。我不明白这些功能是如何工作的,并且我已经弄乱了某些部分以实现不同的结果。我的目标是直接读取键盘事件并将这些原始数字输出到屏幕上(稍后我将处理数字的含义)。这里的问题与 KEYBOARD_BUFFER_SIZE 有关。如果我把它变小,程序似乎运行良好,但它不输出任何事件。如果我把它变大,它会运行得更好一些,但它开始变慢然后冻结(OpenGL 窗口只有一个旋转的颜色立方体)。如何正确捕获键盘事件?

我检查了代码中所有设置步骤的返回值。他们都返回 DI_OK 就好了。

4

1 回答 1

2

您的代码似乎没问题(根据我过去使用过的本教程)。使用几个基于堆栈的数组是有问题的,但应该不是太大的问题(除非您开始运行大量并发的 getEvent 调用)。

但是,最好的办法是停止使用 DirectInput并开始使用Windows Raw Input。最好尽早(即现在)进行此切换,而不是稍后意识到您确实需要使用除 DI 之外的其他东西来获得您想要的结果。

于 2011-04-15T01:11:26.680 回答