如何加快应用程序的帧速率



好吧,这就是问题所在。目前我正在为我的游戏编写一个OCX/NPAPI插件,这样我的游戏就可以在网络浏览器中运行了。在当前的实现中,我使用SetTimer来"勾选"我的游戏(插件dll)的更新和渲染,但我发现在我的机器上FPS(每秒帧数)最多只能是64。我发现这是windows定时器的问题,因为定时器只能由浏览器插件实现的消息窥探过程调用,我不能修改,换句话说,定时器不能比浏览器的进程处理速度快。


所以我的问题是,

  1. 我可以打破浏览器消息限制的64帧速率吗处理或加快定时器进程
  2. 或者我应该把我的游戏移到一个单独的线程,但如何处理窗口消息(用户输入、窗口大小调整等)和游戏线程可以接收

提前感谢!

如果你使用的是一个窗口插件,那么你最好的选择是在一个单独的线程上完成所有的渲染等等。只需使用某种线程安全队列或其他东西在线程之间传递窗口消息;当然,使用互斥对象很有趣,但其实并没有那么难。

如果你正在使用FireBreath(这会为你简化很多),你可以使用一个FB::SafeQueue类。如果你不使用FireBreath,你可以偷它,尽管它需要提升,但无论如何,制作一个线程安全的消息队列并不难。

如果你在主线程上尝试执行所有的游戏逻辑,那么你可能无论如何都会遇到性能问题。

如果它是一个没有窗口的插件,那么你就倒霉了。

相关内容

最新更新