Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SFML] Processeur à 50%

...pour afficher une image!

Sujet résolu
    7 octobre 2007 à 3:56:26

    Bonsoir!
    J'ai un problème majeur avec mon programme, il est supposé charger une image sur le disque dur et ensuite le mettre dans un sprite et puis l'afficher dans une fenêtre, seulement, le processus de mon logiciel prends 50% de mon processeur, valeur qui est extremement grosse pour ce qu'il fait! o_O

    Voilà mon code, peut-être allez vous voir un problème que je n'ai pas vu! :-°
    1. #include <SFML/Graphics.hpp>
    2. using namespace sf;
    3. int main()
    4. {
    5.     //Créer une image a partir d'un fichier
    6.    Image image;
    7.    image.LoadFromFile("C:\\image.jpg");
    8.    Sprite image_sprite;
    9.    image_sprite.SetImage(image);
    10.    // Receuillir les attributs de l'image dans un VideoMode
    11.    VideoMode attDeLaFenetre(image.GetWidth(), image.GetHeight(), 32);
    12.    //Créer une fenetre des dimensions de l'image
    13.    RenderWindow fenetre(attDeLaFenetre, "Fenetre");
    14.     //Debut du loop
    15.     bool running = true;
    16.     while (running)
    17.     {
    18.         Event event;
    19.         while (fenetre.GetEvent(event))
    20.         {
    21.             if (event.Type == Event::Close)
    22.                 running = false;
    23.         }
    24.     fenetre.Draw(image_sprite);
    25.     fenetre.Display();
    26.     }
    27.     return EXIT_SUCCESS;
    28. }


    Merci à vous! ^^
    • Partager sur Facebook
    • Partager sur Twitter
      7 octobre 2007 à 9:01:59

      Ne t'inquiète pas, c'est tout à fait normal ^^ .
      Ton processeur est à fond car tu ne fais pas de pause dans ton programme, et voilà le résultat.
      Il y a un tuto sur le site officiel de la SFML qui parle de la gestion du temps: ici
      • Partager sur Facebook
      • Partager sur Twitter
        7 octobre 2007 à 10:54:26

        J'imagine que tu as un double coeur, donc il prend un processeur à fond ce qui est tout à fait normal.
        Ton jeu n'est pas censé tourner en tâche de fond, il peut donc prendre tout un processeur.
        [ Au passage, tu peux installer un programme de calcul partagé si tu n'es pas sur un portable : voir un tuto des zéros ou www.mersenne.org ]
        • Partager sur Facebook
        • Partager sur Twitter
          7 octobre 2007 à 13:46:14

          Alors je devrais mettre un espece de timer entre les rafraichissements?
          Quel serait le temps le plus optimisé pour ne pas encombrer le processeur? ^^
          Enfin, je vais regarder vos liens et je vous donne des nouvelles :)
          PS:Non pas de double-coeur!

          Bon j'ai maintenant ajouté une limite de framerate et ça a l'air de fonctionner :)
          1. fenetre.SetFrameRateLimit(60)


          Est-ce la bonne façon ou devrais-je attendre un temps avant cahques rafraichissements avec sf::Clock?
          Merci beaucoup en tout cas :D

          EDIT 2: sa marche bien, max 3% de processeur sauf quand je bouge ma fenetre, là ça atteint des 50-60% de Proco :p
          • Partager sur Facebook
          • Partager sur Twitter
            7 octobre 2007 à 14:07:49

            je te dirais même de mettre ceci :
            1. fenetre.SetFrameRateLimit(35);


            c'est parce que l'oeil humain a une limite quant au nombre d'images / seconde qu'il peut voir ;) et la limite est dans le coin de 35, si je ne m'abuse.
            • Partager sur Facebook
            • Partager sur Twitter
            Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
              7 octobre 2007 à 14:46:01

              ok je vais voir cela merci, et puis j'ai oublié d'Edité mais maintenant, quand je bouge la fenetre comme un déchainé, il se tient aux alentours de 15% alors que l'afficheur d'images windows plafonne le 30%. :)

              Bon maintenant j'attaque le reseau! :)
              • Partager sur Facebook
              • Partager sur Twitter

              [SFML] Processeur à 50%

              × 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