我试图在WP7上获得XNA游戏的帧速率高达60 fps.它似乎被锁定在30fps附近.我尝试过改变,但没什么区别.
PresentationParameters.PresentationInterval = PresentInterval.One
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
您可以更改XNA默认的固定时间步长:
// 166666 ticks is 16.6ms, which is 60hz
game.TargetElapsedTime = new TimeSpan(166666) // 'game' refers to your instance of XNA.Game
Run Code Online (Sandbox Code Playgroud)
以下是该功能的文档: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
Run Code Online (Sandbox Code Playgroud)
以下是该功能的文档: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的速度运行,你的游戏只会在显示刷新时部分完成渲染,并且最终会导致屏幕撕裂.