我试图限制我的游戏循环fps使用SFML,但它不能正常工作。
如果我除以60/1000,结果不应该是每帧得到60 FPS的时间吗?
我输入60,但我只得到33,有人知道我在哪里出错了吗?
Here is my header
class Game
{
//..
sf::Clock deltaTimeClock;
float deltaTime;
const float frameTime = 60.0f/ 1000.0f;
bool aSecondPassed();
float currentFPS = 0;
sf::Clock second;
//..
}
我实现
//...
void Game::updateDeltaTime()
{
this->deltaTime = (this->deltaTimeClock.restart().asSeconds());
}
//...
void Game::run()
{
while (this->window->isOpen())
{
this->showFPS();
this->tick();
this->render();
while (deltaTime < this->frameTime)
{
this->deltaTime = this->deltaTimeClock.getElapsedTime().asSeconds();
}
this->updateDeltaTime();
}
}
通过将循环条件更新为
获得稳定的60 fps这→deltaTimeClock.getElapsedTime () .asSeconds () & lt;这→frameTime
但是我会在这个问题上研究更多,也许有更好的方法来实现它。谢谢大家的帮助。