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

 C Discussion :

SDL - Problème de ram


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut SDL - Problème de ram
    bonjour tout le monde.
    Je développe un petit jeux (TuxMan), une copie du Snake, mais avec tux qui gobbe des debians, ubuntu, fedora etc
    Le soucis c'est que quand je joue, il n'y a pas de soucis, tout fonctionne. Mais j'ai la ram qui chauffe, si bien que aprés 15min j'ai 1Go de ram et 2Go de SWAP utilisé...
    Pour le moment le programme se comporte comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while (perdu) {
    //     remplir_ecran_de_blanc;
    //     afficher_les_items;
    //     afficher_tux_a_sa_nouvelle_place;
    //     mettre_a_jour_l'affichage;
    }
    Je vous évite les "verifier si il se mord la queue", "verifier si l'item est gobé", etc etc...
    Le soucis vient donc que chaque "image" afficher est gardé en mémoire (et a 30image sec sa fait bcp)
    Je voudrais donc savoir comment faire pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (perdu) {
    //     EFFACER_LES_SURFACES;
    //     RE-INITIALISER_LES_SURFACES_NECESSAIRE;
    //     afficher_les_items;
    //     afficher_tux_a_sa_nouvelle_place;
    //     mettre_a_jour_l'affichage;
    }
    Mais quand j'utilise SDL_Free_Surface(nom_de_la_surface);
    Il m'envoi bouler...

    Quelqun sait-il comment faire ?
    Merci d'avance pour votre aide

    Inform@tiquement
    Elmanouchko

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 48
    Points
    48
    Par défaut
    Le soucis vient donc que chaque "image" afficher est gardé en mémoire (et a 30image sec sa fait bcp)
    L'idée est de charger toutes tes images au début de ton programme et de les libérer à la fin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SDL_Surface *image = NULL;
    image = SDL_LoadBMP("item.bmp");
    /* boucle des évenements */
    while(flag)
    {
         /* si tu dois afficher une image en fonction d'une action effectuée */
         SDL_BlitSurface(image, NULL, fond_fenetre, &position_choisie);
    }
    SDL_FreeSurface(image);

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    J'ai trouvé une autre solution le jours même, mais j'ai oublié de le signaler.
    J'ai une fonction qui intialisie toutes les images dans des surfaces différentes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *TuxMan_head[5] = {NULL};
    Les 4 premiéres correspondent a : vers le haut, vers la bas, a droite, a gauche. La cinquième lui est celui affiché.
    Ce sui donne pour TuxMan_head :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Tuxman_head[1] = Load_GIF(haut);
    Tuxman_head[2] = Load_GIF(bas);
    Tuxman_head[3] = Load_GIF(droite);
    Tuxman_head[4] = Load_GIF(gauche);
    Tuxman_head[5] = Tuxman_head[1]
    Donc dans ma boucle je n'ai plus qu'a faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tuxman_head[5] = Tuxman[a_afficher]
    Sa fonctionne nickel, j'ai fait comme cela avec tout et il ne bouffe plus 1Go de ram et 2Go de swap après 15min et le proco est revus a la baisse

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

Discussions similaires

  1. [SDL] problème de débogage sdl_ttf
    Par mouteb dans le forum SDL
    Réponses: 4
    Dernier message: 08/09/2006, 17h06
  2. Problème de Ram/Detruire Objets
    Par viscere dans le forum Général Java
    Réponses: 18
    Dernier message: 24/07/2006, 20h15
  3. Problème de RAM
    Par Bouguennec dans le forum Composants
    Réponses: 5
    Dernier message: 20/01/2006, 16h21
  4. [SDL] Problème avec SDL_Flip()
    Par Drannor dans le forum C
    Réponses: 6
    Dernier message: 24/11/2005, 22h26
  5. [SERVER 2003] Problème de ram
    Par sheura dans le forum Windows Serveur
    Réponses: 9
    Dernier message: 22/08/2004, 19h36

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