2012-03-13 4 views
1

Я пытаюсь получить частоту кадров моей игры XNA на WP7 до 60 кадров в секунду. Кажется, что он заблокирован на отметке 30 кадров в секунду. Я пробовал сменить, но мало что изменил.XNA performance на WP7

PresentationParameters.PresentationInterval = PresentInterval.One 

Любые мысли?

ответ

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

Или, если вы просто хотите, чтобы отключить фиксированный временной шаг, попробуйте установить фиксированный шаг по времени к ложным:

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, поэтому вы увидите фиксированный шаг времени, пока не установите его иначе.

Конечно, есть вероятность того, что проблемы с производительностью будут держать вас около 30 кадров в секунду. Вы можете видеть, что V-синхронизация, поддерживающая фрейм, синхронизируется с дисплеем телефона, либо дисплей может быть ограничен 30 кадрами в секунду (маловероятно), либо если ваша игра занимает больше 16,6 мс на кадр, V-sync может держите его до 30 кадров в секунду, чтобы синхронизировать его с дисплеем. При скорости 30 кадров в секунду ваша игра будет отображать каждый другой фрейм, который будет отображаться на дисплее. Но если V-sync был отключен, и ваша игра работала на чем-то вроде 50 кадров в секунду, ваша игра будет частично реализована только при обновлении дисплея, и вы получите screen tearing.