Hi, i have a class to sync the movement in my opengl apps (different pc’s, same speed…), suddenly it doesnt work right with computers faster than mine, can anyone help me find out the mistake?
class sync
{
public:
float targetfps;
float fps;
LARGE_INTEGER tickspersecond;
LARGE_INTEGER currentticks;
LARGE_INTEGER framedelay;
float speedfactor;
void init(float);
void SetSpeedFactor();
};
void sync::init(float tfps)
{
targetfps=tfps;
QueryPerformanceCounter(&framedelay);
QueryPerformanceCounter(&tickspersecond);
}
void sync::SetSpeedFactor()
{
QueryPerformanceCounter(¤tticks);
speedfactor=(float)(currentticks.QuadPart-framedelay.QuadPart)/((float)tickspersecond.QuadPart/targetfps);
fps=targetfps/speedfactor;
if (speedfactor <= 0)
speedfactor=1;
framedelay=currentticks;
}
thanks!
[edit]
i call init at the beginning of the program and setspeedfactor, every frame, then i multiply everything by speedfactor, for example:
glTranslatef(movement*sync.speedfactor,0,0);