试图找到一种方法,以类似于 VSync 的方式从外部限制程序/游戏的帧率,但限制为指定的数字(而不是屏幕刷新率)。在 FRAPS 中可以看到我的目标的一个完美示例,当录制视频时,帧速率限于录制速率。原因是对于图形密集度不高的快节奏游戏来说,可以阻止帧率大幅变化引起的“屏幕滞后”,但是 VSync 不适合,因为奇怪的是它会增加键盘/鼠标之间的延迟(两者都以高速率轮询,所以不是硬件问题)。
理想情况下寻找 C/++ 中的一些建议,老实说不知道从哪里开始。
最佳答案
我不确定你是否明白你在问什么。
FPS 游戏的运行方式是,先绘制屏幕,处理键盘/鼠标等操作和游戏逻辑,然后再次绘制屏幕。在一个紧密的循环中。
它绘制屏幕的速度越快(这主要是您的图形适配器的问题)并且完成其逻辑繁忙工作的速度越快,帧速率就会越快。因为这就是所有正在发生的事情。
帧速率不会减慢处理速度,恰恰相反。如果您在屏幕绘制之间暂停,您的 CPU 会运行得稍微凉爽一些,但不会完成任何其他事情。
换句话说:帧率是一种结果,而不是原因。您的 PC 会花费每一微秒的空闲时间来更新屏幕,因为它没有更好的事可做。
当您看到延迟时,那是您的 PC 确实因大量内存移动、磁盘读取、屏幕计算(想想 1000 个敌人向您飞来)而陷入困境,或者因 Internet 延迟而窒息。延迟不是由屏幕重绘引起的。
更新:
我很难相信你说的话,但我只是这里的回答者。如果你真的想降低你的帧率,让你的 CPU 有事可做。运行 Linux 内核编译。不等了,gamez = Windowz。拉起 Calc.exe 并询问大数阶乘的科学模式。走着瞧吧。如果帧速率没有下降,请并行使用 2 或 3 个 Calc 实例。
关于c++ - 外部限制程序帧率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1884905/