Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: FPS à double vitesse  (Lu 3244 fois)

0 Membres et 1 Invité sur ce sujet

retro-bruno

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
    • Mes freewares
FPS à double vitesse
« le: Novembre 12, 2014, 08:31:07 am »
Bonjour,

Je rencontre un problème que je n'arrive pas à m'expliquer.

A l'aide d'une View de 320x240, d'une texture de décors en 1280x960, je balade un sprite de 16x16 dans le décors.

Le problème qui m'arrive c'est qu'aléatoirement, mon jeu tourne à deux vitesse, normale ou trop rapide. Les changements sont instantanés, mais rares. Ils peuvent se produire, par exemple, au bout d'une minute comme au bout de 20 secondes.

Voici comment je gère la vitesse. Toute d'abord, au début de mon code, il y a ça :
    horloge = sfClock_create();
    sfRenderWindow_setFramerateLimit(win,60);
    sfRenderWindow_setVerticalSyncEnabled(win,sfFalse);

L'horloge tourne en permanence sans jamais être remise à 0, je m'en sert de repère temporel en millisecondes.

Ensuite, pour fixer la vitesse de mon programme à environs la vitesse d'affichage, il y a, en algorithme, ça :
1) Je récupère l'horloge au début dans la boucle dans la variable "temps"
2) A la fin de la boucle, je crée une petite boucle de temporisation :
Citer
Tant que horloge - temps < 16, boucler à vide
Fin Tant que

Je me demandais si cette boucle était nécessaire, du coup ?

EDIT: Sans la boucle, cela semble fonctionne... C'est normal ?
« Modifié: Novembre 12, 2014, 08:43:39 am par DjPoke »
Fraternité - Equité - Liberté

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : FPS à double vitesse
« Réponse #1 le: Novembre 12, 2014, 12:41:28 pm »
Ne fais jamais ça. Au pire un sfSleep pour faire une attente qui ne monopolise pas le CPU. Mais là comme tu as activé une limite de framerate, tu n'as pas besoin de faire quoique ce soit, c'est SFML qui fera la temporisation pour toi.
Laurent Gomila - SFML developer

retro-bruno

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
    • Mes freewares
Re : FPS à double vitesse
« Réponse #2 le: Novembre 12, 2014, 01:13:13 pm »
Merci beaucoup pour ton aide précieuse.  :)
Fraternité - Equité - Liberté

retro-bruno

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
    • Mes freewares
Re : FPS à double vitesse
« Réponse #3 le: Novembre 18, 2014, 11:32:33 pm »
Bonsoir, je déterre ce topic car j'ai un problème similaire mais seulement sous windows.

En fait, je fixe les framerates à 60 avec les commandes suivantes, rien d'autre pour ralentir :
Citer
sfRenderWindow_setFramerateLimit(win,60);
sfRenderWindow_setVerticalSyncEnabled(win,sfTrue);

Sous Ubuntu dans mon chromebook, pas de problèmes, ça tourne même très vite.
Mais sous windows 8.1, avec un processeur i7, et une carte graphique amd desktop, c'est parfois plus lent, parfois rapide. La vitesse change en cours de route et instantanément.
Est ce que cela peut venir de ma carte graphique ? (mon driver est à jour)
Ou existe t'il un problème connu à ce niveau là ?
Fraternité - Equité - Liberté

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : FPS à double vitesse
« Réponse #4 le: Novembre 18, 2014, 11:35:34 pm »
N'active pas la vsync en même temps qu'une limite de FPS. C'est soit l'un soit l'autre mais pas les 2.

retro-bruno

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
    • Mes freewares
Re : FPS à double vitesse
« Réponse #5 le: Novembre 18, 2014, 11:54:50 pm »
Merci, en supprimant la vsync et en fixant la framerate à 50, c'est mieux.
Mais c'est toujours un peu plus lent sous windows, je ne comprend pas pourquoi.

De plus, de temps en temps (rarement heureusement), durant 2 secondes, la vitesse accélère d'un coup, puis elle revient à la normale.

EDIT: J'ai eu l'occasion de tester mon jeu sur Mac/Windows 7/Bootcamp, et il tourne aussi vite et bien que sur mon chromebook Ubuntu. Conclusion : C'est ma carte graphique qui n'est pas terrible.
« Modifié: Novembre 19, 2014, 01:15:58 am par DjPoke »
Fraternité - Equité - Liberté