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;
进入循环
编辑 - 现在问题仍然存在,无论事件循环是否被注释掉。这很奇怪,因为昨天的情况绝对不是这样。