Salut tout le monde,
Je fais mes premiers essais d'un programme qui a 3 sf::Thread :
1 pour la récupération des events, 1 pour l'affichage et 1 pour les calculs.
Cependant j'ai remarqué que les threads ne tenaient pas compte de frame rate (que j'ai limité à 30).
Voici le code en question :
void Game_engine::init_threads()
{
m_app.setActive(false);
processing_thread = new sf::Thread(&Game_engine::update, this);
rendering_thread = new sf::Thread(&Game_engine::dessiner, this);
processing_thread->launch();
rendering_thread->launch();
}
Où Game_engine est la classe qui a la sf::RenderWindow (m_app).
Les fonctions membres update() et dessiner() sont des boucles while :
void Game_engine::update()
{
// Appelé par le processing thread
while(m_app.isOpen())
{
m_scenes[m_scene_actuelle]->update();
}
}
Mais la boucle tourne à une vitesse démente en dépit de frame rate que j'ai mis dans le constructeur
de la classe Game_engine : m_app.setFramerateLimit(30);
Voilà, si vous avez une idée, je suis preneur, car je ne vois pas pourquoi les threads dépassent
la limite de frame !
Merci et bonne journée