Нет необходимости отправлять такие сигналы. Все должно быть обработано в цикле while (основной цикл), и каждый кадр должен быть очищен и прорисован отдельно и в целом, а не в регионах, поэтому SFML использует OpenGL.
Самый очевидный способ отделить игровую логику от основного цикла - сделать игру ООП.
Конечно, он разделит его только на отдельные логические блоки в отдельных файлах, но они будут выполняться «вместе» в одном цикле. Я думаю, что это желаемое (но по крайней мере приемлемое) поведение.
Таким образом, у вас будет класс Game, у которого будет метод Update (). Здесь происходит игровая логика, события обрабатываются (предпочтительно, события запрашиваются перед вызовом и передаются в качестве параметра в Update ()), а состояние всего, что должно отображаться, обновляется.
Вы должны вызывать это на каждой итерации основного цикла.
И этот класс также будет иметь метод Render (), который будет рисовать все, что нужно.
Так бы это выглядело так:
while (App->IsOpened())
{
Game->Update();
App->Clear();
Game->Render();
App->Display();
}
П.С .: Извините за мой плохой английский, надеюсь, вы понимаете это.