Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的游戏更新+;(线程还是计时器)?_C++_Multithreading_Timer_Directinput - Fatal编程技术网

C++ C+中的游戏更新+;(线程还是计时器)?

C++ C+中的游戏更新+;(线程还是计时器)?,c++,multithreading,timer,directinput,C++,Multithreading,Timer,Directinput,最近我想自己制作一个游戏,现在我遇到了一个问题。。。 我想以每秒60次的速度渲染我的游戏,这很好,但我使用Directinput8设置键盘和鼠标,然后调试我的游戏。。。 我发现我的键盘每秒更新60次。例如,我按下“向上”键,我的菜单就疯狂了!我知道我可以使用一些变量来解决这个问题,但我也听说定时器和线程是很有用的,我可以问一些曾经做过游戏的人,或者知道我应该做些什么来给我一些建议吗?一切都会有帮助的!谢谢!:) 顺便说一句,我知道有一些很酷的库(比如Allegro?)已经完成了,也许有人可以告诉

最近我想自己制作一个游戏,现在我遇到了一个问题。。。 我想以每秒60次的速度渲染我的游戏,这很好,但我使用Directinput8设置键盘和鼠标,然后调试我的游戏。。。 我发现我的键盘每秒更新60次。例如,我按下“向上”键,我的菜单就疯狂了!我知道我可以使用一些变量来解决这个问题,但我也听说定时器和线程是很有用的,我可以问一些曾经做过游戏的人,或者知道我应该做些什么来给我一些建议吗?一切都会有帮助的!谢谢!:)
顺便说一句,我知道有一些很酷的库(比如Allegro?)已经完成了,也许有人可以告诉我他们是如何解决这个“更新和渲染”问题的?

通常每个游戏只有一个渲染线程。它会周期性地(比如说每秒)更新整个屏幕,获取此时的所有输入。输入(如键盘和鼠标)是在该线程之外收集的,该线程会在每次更新时获得它。

来自MSDN关于DirectInput的文章:不建议使用DirectInput进行键盘和鼠标输入。你应该改为使用Windows消息。啊…好吧。我想我只需要调整我的代码以使用Windows消息!谢谢你的建议!聪明!我知道了,谢谢你的帮助!祝你有一个愉快的一天。