【发布时间】:2011-02-23 07:53:15
【问题描述】:
我是 C Sharp 新手,正在使用 XNA 框架编写游戏。我创建了一个项目,它是“Platformer”XNA 入门工具包的一个经过大量修改的版本。
我看到(看似)帧速率随机波动。有时它会一直以 60 FPS 运行,有时它会以 60 FPS 开始,然后下降到 49-52,有时它会立即下降到 49-52。使用 Fraps 显示帧率(不将视频录制到磁盘)。
这款游戏的独特性要求它始终以 60 FPS 运行。
因此,似乎某些竞争条件或随机因素导致了各个 exe 运行之间的差异。多次重建没有任何区别。
这种波动在我的台式机和笔记本电脑上发生的频率完全相同,因此这不是硬件、防病毒等问题。
我搜索了如何在 XNA 中锁定帧速率,我的代码似乎正在做它需要做的大部分工作,包括尝试将帧速率限制在 60 FPS(使用 IsFixedTimeStep、SynchronizeWithVerticalRetrace)。
这款游戏从头到尾绝对能达到 60 FPS,我一直都在看。据我所知,当它以 60 FPS 运行时,它不会占用 CPU、RAM 或任何其他资源。
还有其他人经历过这种情况吗?
谢谢, - S
【问题讨论】:
-
您可以使用 FRAPS 的帧时间设置收集更多数据吗?另外:如果您使用垂直同步,并且丢帧,您的帧率将立即减半。如果它在几分之一秒内执行此操作,则该秒报告的帧速率将介于 30 到 60 FPS 之间。
-
“这款游戏的独特性要求它始终以 60 FPS 运行。”真的吗?我很好奇这是什么原因。