Я использую класс счетчика FPS из проекта с открытым исходным кодом, и у меня странная проблема. Когда я запускаю его на моем Toshiba Satellite (очень быстро), кажется, что счетчик достигает максимальной скорости 60 кадров в секунду. Замечательно. Не проблема. У меня есть другой компьютер, EEE, и он будет синхронизировать FPS с той же скоростью, с которой он будет работать. В некоторых случаях он может получить 132 кадра в секунду, и это намного медленнее компьютера. Это затрудняет проверку увеличения частоты кадров на моем основном компьютере для кодирования.
Таким образом, очевидно, что проблема заключается не в вызовах кода, которые различаются для разных процессоров. Может ли кто-нибудь из вас с острым глазом узнать, что это такое, и предложить альтернативы? Большое вам спасибо!
Заголовок:
#ifndef FPS_COUNTER_H
#define FPS_COUNTER_H
class FPS_COUNTER
{
public:
void Update(void); //updates counter - call once per frame
void Shutdown(void); //send max, min, average to log
float GetFps(void) { return fps; }
FPS_COUNTER() : fps(0.0f), lastTime(0.0f), frames(0L), time(0.0f)
{}
~FPS_COUNTER() {}
protected:
float fps;
float lastTime;
long frames;
float time;
};
#endif //FPS_COUNTER_H
CPP
#include <windows.h>
#include "LOG.h"
#include "FPS_COUNTER.h"
extern LOG errorLog;
void FPS_COUNTER::Update(void)
{
//keep track of time lapse and frame count
time = timeGetTime()*0.001f; //get current time in seconds
++frames; //increase frame count
if(time-lastTime>1.0f) //if it has been 1 second
{
fps = frames/(time-lastTime); //update fps number
lastTime= time; //set beginning count
frames = 0L; //reset frames this second
}
}
Редактировать: я предполагаю, что это в вызове timeGetTime () - есть ли способ заставить его вести себя так же, как на моем EER на любом процессоре?