【发布时间】:2012-11-09 01:08:42
【问题描述】:
我今天刚刚注意到,当我编译并运行一个新的 XNA 4.0 游戏时,其中一个 CPU 线程以 100% 的速度运行,并且帧速率下降到 54 FPS。
奇怪的是,有时它以 60 FPS 的速度运行,但随后却下降到 54 FPS。
我之前没有注意到这种行为,所以我不知道这是否正常。我卸载了我的防病毒软件并重新安装了 XNA Game Studio、XNA Redistributable 和 .NET Framework 4。
如果我将 IsFixedTimeStep 设置为 false,则游戏以 60 FPS 运行并且 CPU 使用率最低 (1-2%)。但据我所知,这需要我使用 ElapsedGameTime 进行速度计算,但我不知道该怎么做,因为我对 XNA 还很陌生。但有人说将其设置为 false 会减少生涩的动画。
我已经查过this forum thread,但是没有人找到好的解决方案。
有人遇到过这个问题吗?
编辑: 我做了更多的研究,我实现了一个 FPS 计数器(直到现在,我用 Fraps 测量它),我的计数器显示游戏以 60 FPS 运行(IsFixedTimeStep = true),所以这解决了 FPS 问题,但是高 CPU用法仍然存在。这种情况可能发生在每个人身上吗?
【问题讨论】:
-
也遇到了这个问题,试图确定它让我非常头疼,因为分析只会告诉我时间花在了框架代码的某个地方。有趣的是,如果程序不在前台,它会继续正确更新/绘图/运行,但 CPU 使用率会下降到正常水平。
-
你有几个核心?一般来说,游戏循环
while(1) { update(); draw(); }的 "busy wait" 永远不会休眠(否则游戏会滞后),因此您应该期望至少 100% 的一个逻辑核心被使用。 (所以如果你有一个双核 CPU,它应该是 50%,双核超线程,应该是 25% 左右)
标签: c# windows xna cpu frame-rate