繁体   English   中英

为什么我的DirectInput8堆栈溢出?

[英]Why does my DirectInput8 stack overflow?

整个程序太复杂,无法在此处显示。 基本上,只需注意我最近的git提交中绿色亮点 我对DirectInput很新,所以我希望我犯了几个错误。 我已经非常仔细地研究了MSDN文档,所以我保证我不会把它扔到那里并在它上面加上FIX IT FOR ME。 :)

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM