Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] Accélération matérielle.

Sujet résolu
    2 janvier 2008 à 22:32:14

    Salut à tous
    Ma question est simple et rapide:
    Peut-on bénéficier de l'accélaration matérielle de la carte graphique avec SDL, et si c'est oui, comment?
    Car un fenêtre de 1024x768x32 rame très fort avec seulement une surface !
    Merci.
    • Partager sur Facebook
    • Partager sur Twitter

    La maîtrise des fondamentaux est le fondamental de la Maîtrise.

      3 janvier 2008 à 9:47:36

      La seule accélération matérielle utilisée par la SDL (sous Windows), c'est le fast blitting, donc la surface en VRAM au lieu d'en RAM.

      cf mon tuto (ma signature) §2.1.2. pour un comparatif entre mettre une image en RAM ou en VRAM :)

      Note : ta carte graphique a bien sa mémoire a elle ? ou alors mémoire partagée ?

      Mais il n'en reste pas moins que SDL est quand meme assez lent, car il n'utilise pas les accélérateurs 3D de la carte graphique.
      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        3 janvier 2008 à 10:37:50

        Si tu veux profiter de la carte graphique, regarde du côté de SFML. Cette dernière utilise l'accélération matérielle, et les performances s'en ressentent sur un ordinateur récent. Sinon, côté fonctionnalité, tu retrouves les classiques de la SDL (avec quelques plus), tout ça orienté objet.
        • Partager sur Facebook
        • Partager sur Twitter
          3 janvier 2008 à 11:04:32

          Citation : Fvirtman

          Note : ta carte graphique a bien sa mémoire a elle ? ou alors mémoire partagée ?


          GeForce 7300 GT 256 MB RAM en DD2
          la ram du pc j'en ai 1 Go.
          Pour ce qui est de la VRAM, j'utilise SDL_HWSUFACE, mais ça rame comme pas possible !

          Citation : shuss

          Si tu veux profiter de la carte graphique, regarde du côté de SFML.


          Oui, je crois que c'est bon, j'en ai ma claque de la SDL, elle est trop lente, je vais attaquer la SFML tout de suite (c'est huira qui va être content :lol: )
          Merci les gars.
          • Partager sur Facebook
          • Partager sur Twitter

          La maîtrise des fondamentaux est le fondamental de la Maîtrise.

            3 janvier 2008 à 11:46:50

            fissal_houate > tu as aussi OpenGL qui profite des accélérations matérielles, mais surement moins simple que SFML ! (je n'ai pas encore touché SFML)

            Cela dit, il y a quand meme quelque chose qui me choque : avec le PC que tu as, tu devrais etre fluide avec SDL quand meme.
            Si tu dis qu'avec une seule surface, tu rames, meme si elle est en 1024*768, c'est que tu as un gros probleme avant, qui ne vient pas de SDL.

            rassure moi, tu ne fais pas de SDL_LoadBMP en boucle ?
            • Partager sur Facebook
            • Partager sur Twitter

            Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

              3 janvier 2008 à 12:07:42

              Citation : Fvirtman

              Cela dit, il y a quand meme quelque chose qui me choque : avec le PC que tu as, tu devrais etre fluide avec SDL quand meme.
              Si tu dis qu'avec une seule surface, tu rames, meme si elle est en 1024*768, c'est que tu as un gros probleme avant, qui ne vient pas de SDL.


              Non, aucun problème, car, en utilisant OpenGL ou irrlicht, les FPS sont toujours > 400.
              Mais la SDL je suis sûr que c'est le CPU qui s'occupe des blittages, car le procéssus avec SDL est toujours > 60%, même quand je limite les frames o_O

              Citation : Fvirtman

              rassure moi, tu ne fais pas de SDL_LoadBMP en boucle ?


              Rassures-toi, non, je ne fais pas ça (et je ne l'ai jamais fait d'ailleurs), par contre, j'ai élaborer un Depth-Buffer qui est en fait une liste chainnée, qui trie les objets stockés dedans selon leurs ordre de blittage, (pour simuler la profondeur), en 640x480, y'a pas de problèmes, en 1024x768, j'arrive à 1 image toutes les deux secondes o_Oo_O j'ai essayé de faire l'équivalent avec un tableau (pour éviter les fuites de mémoires dues au listes) c'est en plus pire, car je dois avant chaque blittage éffacer tout le tableau => le désallouer et le réallouer à nouveau.
              Donc, c'est un problème d'accélération matérielle y'a pas à dire.
              • Partager sur Facebook
              • Partager sur Twitter

              La maîtrise des fondamentaux est le fondamental de la Maîtrise.

                3 janvier 2008 à 12:23:16

                non, si ton image est en VRAM, c'est le GPU qui s'occupe du blit, non le CPU.

                Mais j'ai un doute : tu me parles de HWSURFACE (Hardware surface = VRAM), mais ça, c'est pour ton image principale (screen)

                Mais tes images a blitter, sont elles également en VRAM ?
                si tu utilises juste SDL_LoadBMP, alors ça les charge en RAM !!

                Pour les mettre en VRAM, charge ton image, puis cree une image avec SDL_CreateRGBSUrface, en passant HWSURFACE , puis blit l'image extraite par SDL_LoadBMP sur la nouvelle surface, et libere donc l'image chargée.

                Car en effet, si ton "fond" est en RAM, alors, meme si ta destination est en VRAM, tu encombres ton CPU et ton BUS.

                Fait mon petit tuto §2.1.2. RAM VS VRAM. (cf ma signature) lis les commentaires, et fait les tests demandés : je fais un comparatif des deux, avec des fonctions de chargement + évoluées, a tester !
                Et tu verras, c'est le jour et la nuit !
                • Partager sur Facebook
                • Partager sur Twitter

                Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                  3 janvier 2008 à 13:11:04

                  Oui, t'as raison, j'utilise IMG_Load, qui fait sûrement le même truc, donc, c'est à cause de ça si j'ai ce fichus problème ^^ .
                  Par contre, j'ai jeté un oeil sur la SFML, j'ai lu un peu sa doc (qui est en français et qui est très bien faite, grand merci à Laurent Gomila pour le travail accompli) et je peux te dire qu'elle au moins 10 fois plus puissante que la SDL, même que son module audio n'est pas pourrit comme celui de la SDL :D .
                  Je vais voir ce que tu m'as proposé pour vérifier seulement, je crois que je vais me mettre définitivement à la sfml, elle est trop cool, (Ah, je vais rejoindre la bande de Hiura, pour faire de la pub pour sfml :lol: )
                  Merci beaucoup pour tes réponses, même que je te conseil déja de passer à sfml, crois moi, elle est extra (Je commence déja le boulôt les gars ;) )
                  Merci beaucoup.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  La maîtrise des fondamentaux est le fondamental de la Maîtrise.

                    4 janvier 2008 à 20:26:41

                    Je croie que la SDL aussi a une accélération matériel, mais basé sur DX5 !! pour windows, alors que la SFML est basée sur DX9 normalement, alors elle tire partie des avancées technologiques en terme de CG.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 janvier 2008 à 20:28:06

                      Citation : Spiky.88

                      Je croie que la SDL aussi a une accélération matériel, mais basé sur DX5 !! pour windows, alors que la SFML est basée sur DX9 normalement, alors elle tire partie des avancées technologiques en terme de CG.



                      Je suis pas sur à 100%, mais je crois bien que même sous windows, SFML utilise OpenGL
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 janvier 2008 à 20:38:55

                        Petite lecture du code source de SFML...
                        Ah oui c'est vrai je ne trouve que des appels OpenGL dans le code source de SFML, n'empêche qu'elle utilise les accélérations graphique les plus récentes, alors que la SDL je me souviens bien avoir lu qu'elle se base sur DX5.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        [SDL] Accélération matérielle.

                        × 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