Расчет FPS может быть чем-то простым (если точность не имеет первостепенного значения):
DateTime _lastCheckTime = DateTime.Now;
long _frameCount = 0;
// called whenever a map is updated
void OnMapUpdated()
{
Interlocked.Increment(ref _frameCount);
}
// called every once in a while
double GetFps()
{
double secondsElapsed = (DateTime.Now - _lastCheckTime).TotalSeconds;
long count = Interlocked.Exchange(ref _frameCount, 0);
double fps = count / secondsElapsed;
_lastCheckTime = DateTime.Now;
return fps;
}
Установите таймер обновления так, чтобы он вызывал GetFps()
каждую секунду для получения значения.Обратите внимание, что к этому методу не должно быть одновременных вызовов, так как каждый вызов сбрасывает счетчики и время начала.