为什么我的DirectInput8堆栈溢出?

| 整个程序太复杂,无法在此处显示。基本上,只需注意我最近的git commit中的绿色亮点。我对DirectInput非常陌生,所以我希望我犯了一些错误。我已经非常仔细地研究了MSDN文档,所以我保证我不会只是把它扔在那里并在上面盖上FIX IT FOR ME。 :) 基本上,我认为我已将问题缩小到Engine :: getEvent周围的代码区域(238+行)。我不了解这些功能的工作原理,并且弄乱了某些部分以获得不同的结果。我的目标是直接读取键盘事件,然后将这些原始数字输出到屏幕上(稍后我将处理数字的含义)。这里的问题与KEYBOARD_BUFFER_SIZE有关。如果将其缩小,该程序似乎可以正常运行,但不会输出任何事件。如果我把它做大,它的运行会更好一些,但是会开始变慢然后冻结(OpenGL窗口只有一个旋转的颜色立方体)。如何正确捕获键盘事件? 我检查了代码中所有较高设置步骤的返回值。他们都返回DI_OK很好。     
已邀请:
您的代码似乎还不错(根据我之前使用的本教程)。几个基于堆栈的数组的使用是有问题的,但是应该不成问题(除非您开始运行大量并发的getEvent调用)。 但是,最好的选择是停止使用DirectInput并开始使用Windows Raw Input。最好尽早(即现在)进行此切换,而不是稍后才意识到您确实需要使用DI以外的其他东西来获得所需的结果。     

要回复问题请先登录注册