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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 é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();
    }

+ 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