Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer une boucle régulière

Ca boucle toute les 30 ms

    14 août 2006 à 23:02:45

    Yop' tous :)
    J'ai besoin de créer une fonction pour afficher un fade-in/fade-out... Mais pour cela il faut que mon code soit exécuté disont une fois toutes les 30 secondes.

    Voici le code (tiré des cours) :


      temps_debut = SDL_GetTicks();
      i = 0;
      while(i < 255)
      {
        temps_actuel = SDL_GetTicks();
        if (temps_actuel - temps_precedent >= 30)
        {
          // Code du fade-in...
         
          printf("Boucle %ld : %ld ms depuis le début du fade-in. Attente de %ld\n", i, temps_actuel - temps_debut, temps_actuel - temps_precedent);
          temps_precedent = temps_actuel;
          i++;
        }
      }
      printf("Le fade-in s'est bien déroulé en %ld ms\n", SDL_GetTicks() - temps_debut);


    Comme la boucle doit faire 256 tours avec une attente entre chaque tour de 30 ms, la fade-in doit durer environ 7,68 secondes.

    Or il dure 10 secondes de plus, quelque soitle temps d'attente entre chaque boucle.

    Le log donne ça :

    Boucle 0 : 9948 ms depuis le début du fade-in. Attente de 30
    Boucle 1 : 9978 ms depuis le début du fade-in. Attente de 30
    Boucle 2 : 10008 ms depuis le début du fade-in. Attente de 30
    Boucle 3 : 10038 ms depuis le début du fade-in. Attente de 30


    ...

    Boucle 253 : 17545 ms depuis le début du fade-in. Attente de 30
    Boucle 254 : 17575 ms depuis le début du fade-in. Attente de 30
    Le fade-in s'est bien déroulé en 17575 ms

    On peut voir qu'il y a bien 30ms entre chaque boucle, mais la première boucle commence toujours à 9,9s du début du fade-in... Quelqu'un saurait pourquoi ?

    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
      15 août 2006 à 6:12:42

      Je ne sais pas mais c'est quoi le fade-in ?
      • Partager sur Facebook
      • Partager sur Twitter
        15 août 2006 à 10:44:45

        Ah pardon, en fait c'est une image qui s'affiche progressivement (le niveau de transparence commence à 0, puis à chaque tour de boucle (i) il avance), comme ça l'image apparait un peu plus opaque toute les 30 ms ;)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          15 août 2006 à 10:47:05

          tu n'a pas initialisé temps précédent a 0 ;
          • Partager sur Facebook
          • Partager sur Twitter

          Créer une boucle régulière

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown