限制程序的帧率

试图find一种方法来限制程序/游戏的帧率,类似于VSync的方式,而不是指定的数字(而不是屏幕刷新率)。 在FRAPS中可以看到我瞄准的一个完美的例子,当录制video时,帧率限制在录制速率上。 原因在于快速的步伐游戏不是以graphics方式强化以阻止由于帧速率的巨大变化而导致的“屏幕滞后”,然而VSync并不适合奇怪地增加了键盘/鼠标之间的等待时间(两者都以高速轮询)不是硬件问题)。

在C / ++中寻找理想的一些build议,老实说不知道从哪里开始。

我不确定你是否明白你在问什么。

FPS游戏的运作方式是画屏幕,做键盘/鼠标/等等的处理和游戏逻辑,然后再画画面。 在一个紧密的循环。

画面的绘制速度越快(这主要是图形适配器的问题),并且可以更快地完成其逻辑工作,帧速率就越快。 因为这就是所有这一切发生的事情。

帧率不会降低处理速度,反过来也是如此。 如果你在屏幕画面之间放置了一些暂停,你可能会让你的CPU稍微凉爽些,但是不能完成其他任何事情。


换句话说:帧速率是一种效应,不是原因。 你的个人电脑花费每一个空闲的微秒做屏幕更新,因为它没有什么好做的。

当你看到滞后时,那就是你的电脑真的陷入了巨大的内存移动,磁盘读取,屏幕计算(认为1000个敌人在你身上飞行)或因互联网延迟而窒息。 延迟不是由屏幕重绘造成的。


更新:

我很难相信你在说什么,但我只是这里的答案。 如果你真的想降低你的帧速率,给你的CPU做一些事情。 运行一个Linux内核编译。 不用等,gamez = Windowz。 提起Calc.exe并要求科学模式为大量的阶乘。 走着瞧吧。 如果帧速率没有下降,请与2或3个Calc并行处理。

使用线程API暂停游戏的线程几个毫秒,然后恢复它们。 这篇文章(C ++)在CodeProject和这个堆栈(虽然C#)上有一些细节。

kkapture (开放资源)为演示做这个。 我不知道它是否可以修改为您的目的。 它创建一个代理视频驱动程序,但它可能太硬核处理。