我今天注意到,当我编译和运行一个新的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可以减少动画抖动。
我已经检查了这个论坛帖子,但没有人找到一个好的解决方案。
有人遇到过这个问题吗?
编辑: 我进行了更多的研究,并实现了一个FPS计数器(直到现在,我用Fraps测量它),我的计数器显示游戏以60 FPS运行(IsFixedTimeStep = true),所以这解决了FPS问题,但高CPU使用率仍然存在。这是每个人都会发生的吗?
奇怪的是,有时它以60 FPS工作,但然后它只会下降到54 FPS。
我以前没有注意到这种行为,所以我不知道这是否正常。我卸载了我的防病毒软件并重新安装了XNA Game Studio、XNA Redistributable和.NET Framework 4。
如果我将IsFixedTimeStep设置为false,游戏以60 FPS运行,CPU使用率很低(1-2%)。但据我所知,这要求我使用ElapsedGameTime进行速度计算,但我不知道如何做,因为我对XNA相当新。但是有些人说将其设置为false可以减少动画抖动。
我已经检查了这个论坛帖子,但没有人找到一个好的解决方案。
有人遇到过这个问题吗?
编辑: 我进行了更多的研究,并实现了一个FPS计数器(直到现在,我用Fraps测量它),我的计数器显示游戏以60 FPS运行(IsFixedTimeStep = true),所以这解决了FPS问题,但高CPU使用率仍然存在。这是每个人都会发生的吗?
while(1) { update(); draw(); }
不会休眠(否则游戏会卡顿),因此您应该至少期望使用_一个逻辑核心_的100%。 (因此,如果您有双核CPU,则应为50%,具有超线程的双核心应该约为25%) - bobobobo