我有以下计时器类:
class Timer
{
private:
unsigned int curr,prev;
float factor;
float delta;
public:
Timer(float FrameLockFactor)
{
factor = FrameLockFactor;
}
~Timer()
{
}
void Update()
{
curr = SDL_GetTicks();
delta = (curr - prev) * (1000.f / factor);
prev = curr;
}
float GetDelta()
{
return delta;
}
};
我这样使用它:
//Create a timer and lock at 60fps
Timer timer(60.0f);
while()
{
float delta;
float velocity = 4.0f;
timer.Update();
delta = timer.GetDelta();
sprite.SetPosition( sprite.GetVector() + Vector2(0.0,velocity * delta) );
sprite.Draw();
}
但是有一个大问题:对于一个本应以60帧/秒的速度运行的程序,我的游戏运行得太慢了,并且当不使用独立于帧的运动时,相同的测试代码可以平稳运行,因此我的代码肯定有问题。
有什么帮助吗?
最佳答案
如果delta
应该是帧数,则不应将其计算为
delta = (curr - prev) * (factor / 1000.f);
关于c++ - 在计时器类中设置速度因数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9830517/