Падающий снег в SFML
Цель: падающий снег Библиотека: SFML Ошибка: снег падает, но только при условии ,что я что-либо делаю в окне приложения(двигаю мышкой, нажимаю клавиши). Как только я перестаю что-то подобное делать снег просто останавливается.
Так изменяются координаты в методе update.
y += 1;
switch (rand() % 3 + 1)
{
case 1:
x += 1;
break;
case 2:
x -= 1;
break;
case 3:
x = x;
break;
}
Так выглядит гейм-цикл.
while (window.isOpen())
{
while (window.pollEvent(event))
{...}
for (auto& element : snow) //Тут в цикле идём по всем снежинкам и выполняем для них update
{
if (!(*element).update(time))
{
...
}
}
...
for (int i = 0; i < del; ++i)
snow.pop_front();
for (auto element : snow) //Тут идём по списку snow и прорисовываем каждую снежинку
window.draw((*element).cirkl);
window.display();
}
}
Собственно,что мне сделать,чтобы независимо от пользователя снег падал.
Ответы (1 шт):
В моём случае помог один из комментариев.
судя по описанию проблемы у вас просто отрисовка привязана к циклу обработки эвентов - стандартная проблема у новичков (сам с таким сталкивался). Вам необходимо реализовать обработку эвентов и отрисовку независимо. Это можно сделать несколькими вариантами, например делать это в разных потоках, но это может добавить проблем (синхронизация и т.д.), а можно сделать все в одном потоке, но для этого нужно операция по получению эвентов должна вызываться с таймаутом (время между отрисовкой двух кадров). Как то так
Отрисовка была привязана к циклу обработки эвентов. Для решения проблемы просто перенём её в другое место - в game-цикл.