试图找到一种方法,以类似于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/