SFML事件循环性能问题

时间:2016-08-20 01:31:34

标签: c++ graphics sfml

int main()
{
    RenderWindow window(VideoMode(1280,720), "Game");

    window.setActive(false);

    std::thread gameThread(game, &window);

    while (window.isOpen())
    {
        Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                window.close();
        }

    }

    gameThread.join();

    return 0;
}

我做了一个基本的游戏循环,我注意到每隔一秒左右帧时间会出现峰值,有时一帧或两帧高达50毫秒。我意识到,当我发表评论while (window.pollEvent(event))时,口吃就会停止。这可能是SFML的一个错误,还是我做错了什么?

平台 - Windows 10

编译器 - MSVC 2015

SFML版本 - 2.4.0

我通过编写

获得了帧时间测量
Time elapsedTime = clock.getElapsedTime();  
Int64 frameTime = elapsedTime.asMicroseconds() - oldTime.asMicroseconds();              
fps.setString(std::to_string(frameTime));
oldTime = elapsedTime;

进入循环

编辑 - 现在问题仍然存在,无论事件循环是否被注释掉。这很奇怪,因为昨天的情况绝对不是这样。

0 个答案:

没有答案