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 :

[SDL] probleme d'affichage


Sujet :

SDL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 62
    Points : 35
    Points
    35
    Par défaut [SDL] probleme d'affichage
    voila j'ai Ce probleme voir l'image :
    http://img205.imageshack.us/my.php?image=soniccdh3.jpg
    apperement y' a pas de rafraichissement.
    je trouve pas ou est le probleme.
    ci dessous le code d'affichade des sprites et le main.
    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
    16
    17
    18
    19
    20
    21
    22
     
    void afficher_sprite (struct sprite *s_sprite,SDL_Surface *screen)
    {
     		   SDL_Rect src,dest;
    if(!s_sprite->ispaused_anim)
    {
    			 									 if(SDL_GetTicks() - s_sprite->lastfrmupdate > 100)
    {
    												 		s_sprite->cur_frame = (s_sprite->cur_frame +1) % s_sprite->nb_frame;	
    														s_sprite->lastfrmupdate = SDL_GetTicks();				 
    }
            }
           /* la postion du sprite dans le bmp des sprites */
           src.x=s_sprite->s_frame[s_sprite->cur_frame].x;
           src.y=s_sprite->s_frame[s_sprite->cur_frame].y;
           src.w = s_sprite->width;
           src.h = s_sprite->height;
           /* ... */
           dest.x = s_sprite->x;
           dest.y = s_sprite->y;
           SDL_BlitSurface(s_sprite->surf,&src, screen,&dest); 
    }

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    int main(int argc, char **argv)
    {
      SDL_Event event;
      SDL_Rect mest;
      struct sprite s_sprite;
      int isdone;
      SDL_Surface *plan = SDL_LoadBMP ("plan.bmp");;
      SDL_Surface *screen;
     
        /* Appel de Free lors de la fermeture du programme */
        //atexit(Free);
     
        /* Initialisation de SDL */
        if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER)==-1)
        {
           perror("Impossible d'initialiser SDL.\n");
           return 1;
        }
     
        /* Initialisation de la fenêtre */
        screen = SDL_SetVideoMode(800, 300, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
        if(screen==NULL)
        {
           perror("Erreur lors de la création de la fenêtre.\n");
           return 1;
        }
     
        /* Change le titre de la fenêtre et de l'icône */
        SDL_WM_SetCaption(":: SONIC ::","HIHI");
     
      charger_sprite (&s_sprite);
     
      SDL_EnableKeyRepeat(10,10);
     
      isdone=0;
      mest.x=0;
      mest.y=0;
      SDL_BlitSurface(plan,NULL, screen,&mest);
      while (!isdone)
      {
        /* Lecture des évènements dans la queue d'évènements */
        while (SDL_PollEvent (&event))
        {
          SpriteEvent(&event, &s_sprite);
     
          switch (event.type)
          {
          case SDL_KEYDOWN:
    	    if(event.key.state==SDL_PRESSED)
    	    {
              if(event.key.keysym.sym==SDLK_ESCAPE)
    	        isdone = 1;
    	      else if (event.key.keysym.sym==SDLK_F1)
    	        SDL_SaveBMP(SDL_GetVideoSurface(),"screenshot.bmp");
     
    	   }
          break;
          case SDL_QUIT:
            isdone = 1;
    	  break;
          }
        }
     
        afficher_sprite(&s_sprite, screen);
     
        SDL_Flip(screen);
      }
     
      return 0;
    }
    ++

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu ne réaffiches jamais le fond, donc les restes de ton sprite ne s'effaceront jamais frame après frame. Il faut donc également que tu blit ton background à chaque tour de boucle, avant les sprites.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    ca marche merci
    resolu

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

Discussions similaires

  1. probleme d'affichage avec sdl
    Par Asmod_D dans le forum SDL
    Réponses: 5
    Dernier message: 12/02/2007, 18h11
  2. Probleme d'affichage OPENGL/SDL
    Par black.out dans le forum OpenGL
    Réponses: 4
    Dernier message: 07/07/2006, 12h39
  3. Problème d'affichage d'un sprite avec SDL
    Par youp_db dans le forum SDL
    Réponses: 1
    Dernier message: 11/02/2006, 18h08
  4. [langage] Problème d'affichage
    Par marcoss dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2003, 13h05
  5. IE [Applet] Plug-in problème d'affichage
    Par Tonton Luc dans le forum JBuilder
    Réponses: 4
    Dernier message: 19/06/2003, 08h28

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