Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: AnselmeSfml le Octobre 05, 2014, 03:02:35 pm

Titre: Dimension de fenêtre et baisse de fps?
Posté par: AnselmeSfml le Octobre 05, 2014, 03:02:35 pm
Bonjour à tous!

J'ai remarqué quelque chose d'étrange (et embêtant :-\) en ce qui concerne la taille de la fenêtre et les performances du programme. Lorsque je déclare une fenêtre de taille 640*480, mes sprites se déplacent très très vite (je ne gère pas le temps et ne limite pas les fps pour bien observer) alors que lorsque je déclare une fenêtre relativement grande (1366*768) mes sprites se déplacent extrêmement lentement, j'en déduis donc une baisse des fps/performances. Ais-je raison, ou cela vient-il de mon programme? Dans le premier cas, comment pallier ce "problème"?

Merci.  :)
Titre: Re : Dimension de fenêtre et baisse de fps?
Posté par: Laurent le Octobre 05, 2014, 10:16:50 pm
Citer
Ais-je raison
Regarde par toi-même, c'est pas très dur d'afficher le nombre d'image par secondes ;)

Citer
Dans le premier cas, comment pallier ce "problème"?
Trop peu d'informations pour donner des réponses précises. Mais en tout cas, lorsqu'il y a plus de pixels à remplir, ça prend plus de temps, logique.

Assure toi aussi que tes pilotes graphiques sont à jour.
Titre: Re : Dimension de fenêtre et baisse de fps?
Posté par: AnselmeSfml le Octobre 06, 2014, 05:57:57 pm
Comment afficher le nombre de fps?
Merci
Titre: Re : Dimension de fenêtre et baisse de fps?
Posté par: Laurent le Octobre 06, 2014, 06:07:37 pm
C'est très facile à faire, qu'est-ce qui te pose problème au juste ?
Titre: Re : Dimension de fenêtre et baisse de fps?
Posté par: AnselmeSfml le Octobre 07, 2014, 01:10:24 pm
Pour récupérer le nombre de fps, ais-je déjà à gérer le temps? J'ai vu qu'en utilisant des sf::Clock le nombre retourné est très aléatoire, baissant de 60 jusqu'à 20... Est-ce la seule manière?

Merci.
Titre: Re : Dimension de fenêtre et baisse de fps?
Posté par: Laurent le Octobre 07, 2014, 01:23:11 pm
sf::Clock clock;

while (... main loop ...)
{
    float fps = 1.f / clock.restart().asSeconds();

    ...
}

Ca c'est le FPS instantané. Si tu veux un FPS "lissé" tu peux compter le nombre de tour de boucle principale effectués en 1 seconde.

sf::Clock clock;
unsigned int fps = 0;
unsigned int counter = 0;

while (... main loop ...)
{
    counter++;
    if (clock.getElapsedTime() >= sf::seconds(1))
    {
        clock.restart();
        fps = counter;
        counter = 0;
    }

    ...
}

Sinon tu peux aussi télécharger FRAPS. C'est plus simple et plus fiable.