Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL]Optimisation du FPS

Sujet résolu
Anonyme
    12 février 2006 à 1:39:27

    Bonjour,
    Je vien de terminer ma classe de gestion de map, seulement j'ai d'énorme problèmes de performance. Le FPS est entre 1 et 4. 1 à 4 images par seconde, c'est vraiment lent. J'aurais donc besoind e l'aide d'un conaisseur pour savoir quels serait les améliorations a aporter pour accèlérer la vitesse. Vous trouverez le code complet pret a compiler ici :
    http://t4cwebserver.Free.fr/FantasticLand.rar
    • Partager sur Facebook
    • Partager sur Twitter
      12 février 2006 à 9:16:02

      Je n'ai pas pu vraiment étudier ton code car SDL_image n'est pas installé dans mon IDE.

      Mais je peux quand meme te donner quelques infos, si jamais tu loas une image trop grande, tu auras une baisse de performance, tandis que si tu la fragmente en plein de morceaux, et que tu les affiches chacun séperemment, ça ira beaucoups mieux.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        12 février 2006 à 10:09:46

        Charger 20 SDL_Surface* de 32*32 est plus lourd qu'un SDL_Surface* de 320*320.

        En suite, le FPS est a 40 si je ne blit plus aucun graphique(En supriman/renoman les chipsets par exemple). Une telle baisse ne peutpas s'expliquer par la simple taille des images.

        Qaund a SDL_Image, c'est juste pour lire les .png Tu peut le trouver sur le site de la SDL.
        • Partager sur Facebook
        • Partager sur Twitter
          12 février 2006 à 10:17:18

          Je connais SDL_Image, mais je ne m'en sert jamais, donc je ne l'ai jamais installé.

          Sinon, pour m'expliquer.

          J'avais créé un petit casse-brique. Au début, 50 grosse brique était affichée, résultat : ça ramait.

          Ensuite, j'ai affiché 250 mini briks, plus aucun lag.

          Pourtant, elle toute les grosse briques prenaient autant de place que toute les petites briques.

          Sinon, je n'ai pas trop regarder ton code, mais va faire un tour par ici :
          http://perso.numericable.fr/~fvirtman/info/tuto/2_1_02_imbouge.cpp

          Utilise des switch à la place de if, si tu peux.

          Et sinon, c'est quoi la configuration de ton pc ?
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            12 février 2006 à 10:26:54

            Bon, je t'esplique : Je load une grosse image PNG. De cette image, je découpe des carées de 32*32 que je pose au bone endroit.
            Toute la map est génèrer par caré.
            Mon PC, même si sa ne vien pas de lui, est un portable avec cpu 1.5Ghz, 256 ram, 45Go HD, et qui a résister a mes diférents "teste" sur l'overflow et des codes assembleur extrèmement instable ^^ C'est un survivant ;)

            Edit : Intérèssent ton texte sur la VRAM. Je vais modifier mon foncteur de chargement d'image.
            • Partager sur Facebook
            • Partager sur Twitter
              12 février 2006 à 10:32:14

              lol

              Et bien, je pense savoir pourquoi. J'ai créé des programmes, qui, sous mon vieux P3 256 ram, ramaient.

              Mais sur mon PC avec 1go de ram, plus aucun lag.

              Du fait que je charge mes images dans la ram.

              Maintenant, à toi de calculer, une image de 32*32 (sachant qu'elle n'est pas compréssée dans la ram, donc dans la ram, on considère qu'elle fait la meme taille que si c'était une bmp.) tu multiplie son poid dans la ram par le nombre, et tu verras si ça vient de là.

              Autrement, essaye d'optimiser pour que les images soient chargées dans la carte graphique et la ram de façon a avoir le moins de lag possible.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                12 février 2006 à 10:34:46

                Déja je fait la gestion des chipset : Je ne charge que els surfaces "utiles". Mais, je rapelle que même en suprimant toute les images, donc en ne blitant rien, j'ai un fps de 40, ce qui est assé long.(J'ai pour abitude d'avoir dnas les 200...)
                • Partager sur Facebook
                • Partager sur Twitter
                  12 février 2006 à 10:38:06

                  C'est vraiment bizzare...

                  Fais 2 tests : ne chargent aucune image, note le nombre de FPS.

                  Puis charge une seule image (sans l'afficher) et note le nombre de FPS a nouveau.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    12 février 2006 à 10:46:04

                    WOA!!!!!
                    Sa vas télement vite qu'on voit plus l'image XD
                    (SInon, pir le teste, c'était 1à4 -> 40 à 45)
                    Mentenant, j'ai du : 50à60 o_O

                    Sinon, c'est bien néssésaire le SDL_Rect dnas le ciopie de f à r? Sinon, j'ai un petit plentage a la fermeture du programme(destruction des surfaces en mémoire).
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 février 2006 à 10:47:30

                      Tu peux nous mettre ton code quelque part (pas dans un .rar) ?

                      Tu peux le mettre sur http://rafb.net/paste par exemple ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 février 2006 à 10:48:50

                        Citation : JC_Master

                        Sinon, c'est bien néssésaire le SDL_Rect dnas le ciopie de f à r?



                        Essaye sans et tu verras bien ^^

                        Sinon, pour le plantage, avant de quitter sdl, vide toutes tes images.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          12 février 2006 à 10:56:34

                          Justement, sa plente quand je libère mes surfaces...
                          (Si je les libères pas, tout vas bien, sauf que je doit avoir uen fuite mémoire).
                          J'aimerait bien surveiller la mémoire masi je n'arive pas a utiliser le debugguer de code::block. Il me dit : no file called map.cpp. Enbètent pour mêtre un breack point ...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            12 février 2006 à 11:00:52

                            Hum...

                            Alors là :o

                            Place tes images en ram avant de les supprimer peut etre ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              12 février 2006 à 11:04:41

                              Même si je les places en rame, il faudras suprimer celles en VRAM.
                              Sinon, j'up le fichier comprèsser en zip. Même nom, sauf que .zip a la place de .rar.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                12 février 2006 à 11:08:27

                                Justement, ce que je te dit, c'est de déplacer les images qui sont en vram dans la ram.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  12 février 2006 à 11:15:51

                                  Je ne voit pas en quoi sela suprime la néssésiter de supression...
                                  Bref, el problème vien aps de sa.
                                  Je vien de me rendre compte que la fonction Map::Clear ne suprimai pas les surfaces. Quand la fonction est apeller aucune surface n'est trouve,r et on rentre pas dans la boucle. Ce qui est bizare, c'est que c'est le SDL_FreeSurface a l'intérieur de cette boucle qui fait plenter! Si je le passe en commentaire, sa ne plente plus. Pourtant, les std::cout qui sont dnas la boucle n'aparaissent pas... Très étrenge.

                                  Edit : Je fait le plus vite pour le .zip, amsi le menu démarer de l'ordi qui a internet vien de "mourir".(Comme si sa sufisait pas qu'il rame...)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    12 février 2006 à 11:29:39

                                    Ce que je disais, c'est que comme avant tes images étaient en rame, ça ne plantait pas que tu quittait.

                                    Donc passe les en ram avant de les supprimer...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      12 février 2006 à 11:44:31

                                      Bon, j'ai trouver le problème :
                                      Map Carte; avent le main.
                                      Explication : les fonctions sdl on besoin de SDL_Init.
                                      Quand le destructeur était apeller, SDL était déja fermer. La mémoire était en oparti libérer, la destruction entrainait un afreu plentage.
                                      J'ai tout simplement résolu le problème en créen Carte dans la fonction main, et en passent une référence a Carte à la fonction draw.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        12 février 2006 à 11:54:06

                                        Et bien tres bien !!

                                        Tu n'a plus qu'à mettre le petit :
                                        Image utilisateur
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        [SDL]Optimisation du FPS

                                        × 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