因为你没有window.display()
在循环中调用,所以注意停止线程一段适当的时间,用sf::RenderWindow::setVerticalSyncEnabled
或设置sf::RenderWindow::setMaxFramerateLimit
.
试试这个:
while (window.isOpen()) { processEvents(window); // this makes the thread sleep // (for ~16.7ms minus the time already spent since // the previous window.display() if synced with 60FPS) window.display(); }
来自SFML文档:
如果设置了限制,则每次调用后窗口将使用一小段延迟,
display()
以确保当前帧持续足够长的时间以匹配帧速率限制.