我正试图让我的XNA游戏在WP7上的帧率高达60 fps。它似乎被锁定在30fps附近。我尝试过改变,但没什么区别。
PresentationParameters.PresentationInterval = PresentInterval.One
有什么想法吗?
答案 0 :(得分:5)
您可以将XNA默认的固定时间步长更改为:
// 166666 ticks is 16.6ms, which is 60hz
game.TargetElapsedTime = new TimeSpan(166666) // 'game' refers to your instance of XNA.Game
以下是该功能的文档: http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.targetelapsedtime.aspx
或者,如果您只想关闭固定时间步,请尝试将固定时间步设置为false:
game.IsFixedTimeStep = false // 'game' refers to your instance of XNA.Game
以下是该功能的文档: http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.isfixedtimestep.aspx
默认情况下,这在XNA中设置为true,因此您将看到固定的时间步长,直到您设置它为止。
当然,性能问题也有可能让你保持30 fps左右。您可能会看到V-sync阻止帧与手机显示同步,显示可能限制为30 fps(不太可能),或者如果您的游戏每帧花费超过16.6ms,V-sync可能会将其保持在30 fps以使其与显示屏保持同步。在30 fps时,您的游戏将渲染显示刷新的每隔一帧。但是如果V-sync被禁用并且你的游戏以50 fps的速度运行,你的游戏只会在显示刷新时部分完成呈现,你最终会得到screen tearing。