sfml로 게임 루프를 작성하고 있습니다. 내가 잠을 자지 못하게 할 때, 각 루프 반복마다 경과 된 시간은 ~ 1ms입니다. 그러나 수면 (수면 시간)을 추가 할 때 갑자기 dt가 높습니다. 루프의 시작 부분에서 dt를 다시 시작했지만 마지막 sleep 시간을 더하는 것으로 보입니다. 그 원인은 무엇입니까? 수면 https://aww.moe/sn1z0a.png게임 루프에서 sleep()을 사용하면 델타 시간이 불안정합니다.
: 수면없이
sf::Clock clock;
float dt;
sf::Time sleepTime = sf::milliseconds(0);
while(m_Window.isOpen())
{
sf::Time elapsed = clock.restart();
dt = elapsed.asMilliseconds();
cout << "Elapsed: " << dt;
sf::Event event;
while(m_Window.pollEvent(event))
{
switch(event.type)
{
case sf::Event::Closed:
m_Window.close();
break;
}
}
sleepTime = sf::milliseconds(16 - dt);
float time = sleepTime.asMilliseconds();
cout << "\tSleep time: " << time << endl;
if(sleepTime >= sf::Time::Zero)
{
sf::sleep(sleepTime);
}
else
{
cout << "Shit." << endl;
}
수면으로 인해 발생합니다. 왜 자고 있니? –
게임 속도를 일정하게 유지하고 싶습니다. 나는 이것을 다음과 같이 사용하고있다 : http://www.koonsolo.com/news/dewitters-gameloop/. – Glamhoth
그리고 그 수면은 매우 정확하지 않습니다. 하지만 루프의 시작 부분에서 dt를 다시 시작합니다. 왜 수면 시간이 dt에 추가됩니까? – Glamhoth