-
2 pièce(s) jointe(s)
FPS très bas
Bonjour à tous,
Je me heurte aujourd'hui à un problème vraiment incongru. En fait, en codant une petit jeu consistant à envoyer des missiles sur la maison adverse sur un terrain généré aléatoirement, les fps varient très bizarrement.
En effet, bien que l'on puisse pour l'instant (très sommairement) envoyer des missiles, l'application, tournant à une moyenne normale définie par setFramerateLimit (60) tourne à 1 fps au bout d'exactement 16 secondes.
Vous avez bien lu : 1 FPS à partir de 16 secondes tout pile sachant que l'affichage consiste simplement en 2 maisons 3 sprites de terrain et 1 ou 0 missile (voir image).
Je précise que j'utilise 2 classes singleton pour gérer notamment les missiles et les images (on sait jamais dès fois que le problème puisse venir de là).
J'ajoute également que même en supprimant toutes les fonctions de dessins et toutes les fonctions d'update le fps passe à 1 à 16 secondes.
Cela m'est totalement incompréhensible car je ne vois aucun endroit susceptible de ralentir ledit FPS.
Merci pour votre aide, si vous voulez du code je peux vous en donner mais mes classes sont nombreuses, intriquées et non commentées :mouarf:
-
Bonsoir
Tu attends quoi comme aide avec les éléments que tu donnes ? A part te dire que cela ne vient pas de la sfml et donc que tu as des erreurs dans le code, je sais pas trop
-
Oui c'est vrai que le problème est tellement incongru que je ne vois pas quels éléments définir pour situer l'origine.
D'ailleurs je suis actuellement sur linux et là le problème a disparu !
Je réessaierai demain sur windows
-
Bonjour,
Peut être qu'un sleep se cache et que du coup, il ralentit chaque image ?
Sinon, désactivez le setFramerateLimit(). Peut être que vous en avez mis deux ?
Vous pouvez aussi tenter de déboguer avec des std::cout ou avec un débogueur. Ou alors, peut être avec un profileur.
-
Bon eh bien en fait le problème s'est résolu lorsque j'ai modifié certaines parties de mon code d'ailleurs je ne suis même pas sur que c'est cela qui l'a résolu car je n'ai pas recompilé le programme au lancement de code blocks :mrgreen:
Merci quand même pour le temps que vous avez pu passer sur ce sujet somme toute assez inutile :D