首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SDL2 - Vsync不工作

SDL2 - Vsync不工作
EN

Stack Overflow用户
提问于 2015-06-20 12:13:04
回答 1查看 9.8K关注 0票数 5

我在我的程序中使用vsync,它可以正常工作,直到我最小化窗口。我在创建渲染器时就这样做了:

代码语言:javascript
复制
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);

下面是游戏循环:

代码语言:javascript
复制
while (running)
{
    checkEvent();
    handleKeyboard(timer.getDelta());

    render();
}

它给了我一个稳定的60帧每秒,但我得到超过100000帧每秒当我最小化窗口。为什么会发生这种事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-20 12:17:24

可能只是SDL中的一个bug。如果您更多地研究这个问题: read做一些测试,您可以报告错误。它很可能很快就会修好。瑞恩和同事们干得很好。:)

这么说吧。我绝不会认为Vsync在每个系统上都能工作。您可能想要添加您自己的框架限制系统。依靠硬件来限制框架是个坏主意。

编辑:--我在游戏中使用它来限制框架:

代码语言:javascript
复制
while (!gameLoop->done)
{
    int start = SDL_GetTicks();
    gameLoop->update();
    int time = SDL_GetTicks() - start;
    if (time < 0) continue; // if time is negative, the time probably overflew, so continue asap

    int sleepTime = gameLoop->millisecondsForFrame - time;
    if (sleepTime > 0)
    {
        SDL_Delay(sleepTime);
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30953858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档