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

Posted

技术标签:

【中文标题】C++ 中的游戏更新(线程或计时器)?【英文标题】:Game Update in C++ (Threads or Timer)? 【发布时间】:2014-05-18 05:03:48 【问题描述】:

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

【问题讨论】:

来自 MSDN 关于 DirectInput 的文章:不建议使用 DirectInput 进行键盘和鼠标输入。您应该改用 Windows 消息。 啊……好吧。我想我只需要调整我的代码以使用 Windows 消息!感谢您的建议! 【参考方案1】:

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

【讨论】:

聪明!我明白了,谢谢你的帮助!祝你有美好的一天。

以上是关于C++ 中的游戏更新(线程或计时器)?的主要内容,如果未能解决你的问题,请参考以下文章

游戏逻辑的异步屏幕更新,C++

如何更新游戏板? C++

《游戏引擎架构》读书笔记1-游戏引擎中的C++

从高度动态的 C++ 数据模型更新 QML:计时器与属性绑定

一个使用两个线程的简单 C# 游戏循环,这样好吗? [关闭]

华为联运游戏审核驳回:在未安装或需更新HMS Core的手机上,提示安装,点击取消后,游戏卡屏(集成的6.1.0.301版本游戏SDK)