SDL传帧率上限执行

问题描述 投票:1回答:1

我是真正的新游戏开发和我一直在使用SDL2已经提出了几个方案。帧速率是不是一个问题,因为我从来没有打算释放那些程序,只是使用的SDL_RENDER_PRESENTVSYNC封顶帧频60(我的显示器的刷新率)。现在我要提出申请,我可以发送给朋友和我想知道如果我的帧速率实现任何好处。

unsigned int a = SDL_GetTicks();
unsigned int b = SDL_GetTicks();
double delta = 0;

while (running)
{
    a = SDL_GetTicks();
    delta += a - b;

    if (delta > 1000/60.0)
    {
        std::cout << "fps: " << 1000 / delta << std::endl;

        Update();
        Render();
        delta = 0;
    }

    b = SDL_GetTicks();
}

我有我搞砸了我的计算可怕,但很多我已经在网上找到平时似乎很长篇大论的其他实现方式的一个很好的感觉。如果可能的话,我想保持游戏循环内的画面帽的实施和尽可能简单。任何帮助表示赞赏!

c++ sdl frame-rate game-loop
1个回答
0
投票

你应该把线b = SDL_GetTicks();if语句内和Update();之前。和delta = a - b代替delta += a - b。而且你还可以使用b=a而不是调用SDL_GetTicks()功能。

while (running)
{
    a = SDL_GetTicks();
    delta = a - b;

    if (delta > 1000/60.0)
    {
        std::cout << "fps: " << 1000 / delta << std::endl;

        b = a;    

        Update();
        Render();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.