IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

lag programme C++ & SDL


Sujet :

SDL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 24
    Par défaut lag programme C++ & SDL
    Bonjour
    Voila j'ai réaliser mon premier programme en C++ et SDL. Mais il lag beaucoup trop alors que c'est un programme "léger" ( ca lag de temps en temps quand je charge une image)

    voici mon code (je sais il y a pas mal d'imperfections mais c'est mon premier programme ...)

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    C'est assez indigeste à lire donc j'ai pas regardé, mais tu ne ferais pas des new pour charger tes images ? Si c'est pas ça, ce serait sympa d'isoler et de ne poster (sur le forum, entouré des balises code) *que* le code nécessaire, pas 3000 lignes stp

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 24
    Par défaut
    14 000 lignes ....

    oui j'avoue c'est un peu indigeste mais le problème c'est que je ne sais pas du tout d'où ça vient.

    mais voici le bout de code pour l'affichage globale et celui ci c'est pour charger les images

  4. #4
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Je m'étais pas amusé à compter, c'était plus une façon de dire

    Enfin, pour ton problème ça vient bien de ce que je pense, il y a de l'allocation mémoire en dessous et une passe supplémentaire. Les ressources, il te faut les charger pendant une phase de loading, et basculer entre diverses ressources (tes images ici, qui ne devraient être qu'une collection de pointeurs vers les images préchargées) tout au long du "niveau" (ie, l'espace de temps où tu ne veux pas de lag).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 24
    Par défaut
    en gros je devrais toutes les chargées une seule fois et après me débrouiller avec les pointeurs ?

    le problème c'est que ça me fera énormément de pointeurs ( + de 150 ...)
    C'est pas grave ???

  6. #6
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Faut voir la taille des images en mémoire, c'est ça la question. Si elles sont trop grosses, tu peux streamer en utilisant un thread qui s'occupe de la gestion des ressources.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 24
    Par défaut
    heu tu as un tuto a me conseiller ????

  8. #8
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 580
    Par défaut
    150 pointeurs ce n'est rien
    la question c'est plutot combien de place totale tes images prennent-elles en mémoire ?
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    Il faut que tu charge tes ressources en fonction de leur utilisation. Pas tout au début et puis on libère tout a la fin. (Pour un petit jeu ca passe mais c'est une mauvaise habitude)

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    chargement du splash screen
    affichage du splash screen
     
    libération splash
    chargement du menu
     
    gestion/affichage du menu
     
    libération menu
    chargement jeu
     
    gestion/affichage du jeu
     
    ...
    Tu organise tout ca par phase avec une machine a état.
    D'un facon général tu ne charges pas de ressource a partir d'un fichier pendant la phase de jeu (sauf cas particulier -> streaming)
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  10. #10
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Par défaut
    Citation Envoyé par goffle Voir le message
    le problème c'est que ça me fera énormément de pointeurs ( + de 150 ...)
    Je précise au cas où :
    T'es pas obligé des les gérer tous un par un ces pointeurs.
    J'utilise par exemple un simple tableau, voir un/des vecteur.
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_Surface* Sprites[10]; //un tableau de 10 pointeurs
    et tu peux ainsi charger les ressources a partir d'une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=0;i<10;i++) Sprites[i]= loadimage(nombase+to_string(i)+".jpg");
    (nombase est un std::string ici)
    et pour l'utilisation, utiliser un enum c'est plus sympas qu'un numero :
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum mes_obj {jouteur=0, maison, voiture,truc, machin};
    ainsi : sprites[maison] te donne le pointeur vers ta ressource maison.

    et ne pas oublier les SDL_FreeSurface à la fin.
    Tu peux avoir plusieurs tableaux, en fonction de ce qui t'arrange, par exemple en fonction de la durée de vie de tes ressources.

    voilà.


    pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    std::string to_string( const T & Value )
    {
        // utiliser un flux de sortie pour créer la chaîne
        std::ostringstream oss;
        // écrire la valeur dans le flux
        oss << Value;
        // renvoyer une string
        return oss.str();
    }

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 24
    Par défaut
    Merci beaucoup pour les infos. Je crois avoir compris.
    @bientot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 07/04/2015, 19h48
  2. Réponses: 7
    Dernier message: 22/04/2013, 23h44
  3. Exporter un programme en C/SDL avec xcode
    Par morgan76 dans le forum C
    Réponses: 3
    Dernier message: 07/03/2013, 09h58
  4. Programme d'exemple SDL
    Par gege2061 dans le forum gtksdl
    Réponses: 7
    Dernier message: 21/07/2007, 18h26
  5. Programmation graphique ... SDL ??
    Par Franck.H dans le forum C
    Réponses: 9
    Dernier message: 29/04/2004, 20h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo