Производительность XNA на WP7 - PullRequest
1 голос
/ 13 марта 2012

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

PresentationParameters.PresentationInterval = PresentInterval.One

Есть мысли?

1 Ответ

5 голосов
/ 14 марта 2012

Вы можете изменить фиксированный временной шаг, по умолчанию 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 кадров в секунду. Возможно, вы видите V-синхронизацию, удерживающую кадр для синхронизации с дисплеем телефона, либо дисплей может быть ограничен 30 кадрами в секунду (маловероятно), либо, если ваша игра занимает больше 16,6 мс на кадр, V-синхронизация может удерживайте его до 30 кадров в секунду, чтобы синхронизировать его с дисплеем. При скорости 30 к / с ваша игра будет рендерить каждый второй кадр, который обновляет дисплей. Но если бы V-sync был отключен и ваша игра работала со скоростью около 50 кадров в секунду, ваша игра рендерилась бы только частично к тому времени, когда обновился дисплей, и вы бы получили разрыв экрана .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...