我有以下计时器类:

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/

10-15 06:49