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 :

Probleme de blit


Sujet :

SDL

  1. #1
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut Probleme de blit
    Salut !

    J'ai un souci un peu bizarre de blit...
    J'ai la struct suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    struct s_map
    {
    	/* nombre de tiles que contient la map */
    	int nb_tiles;
    	/* largeur et hauteur de la map en nombres de tiles */
    	int width;
    	int height;
    	/* tableau de tiles representant la map */
    	struct s_tiles *les_tiles;
    	/* Pointeur sur la surface contenant le chipset des tiles */
    	SDL_Surface *surf_les_tiles;
    }map1;
    Je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SDL_Surface *screen, *la_map;
    screen = SDL_SetVideoMode(640,480,8,SDL_SWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
    map1.surf_les_tiles = SDL_LoadBMP("../tiles/tiles.bmp");
    la_map = SDL_CreateRGBSurface(SDL_SWSURFACE,256,1024,8,0,0,0,0);
     
    	SDL_BlitSurface(map1.surf_les_tiles,NULL,la_map,NULL);
    	SDL_BlitSurface(la_map,NULL,screen,NULL);
    	SDL_Flip(screen);
    Rien ne s'affiche, alors que si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SDL_BlitSurface(map1.surf_les_tiles,NULL,screen,NULL);
    SDL_Flip(screen);
    Ca affiche bien..
    Voila je comprend pas du tout pourquoi le premier bout de code fait rien..si quelqu'un veut bien m'expliquer où j'ai tout faux..
    Merci
    Sorry
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  2. #2
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Points : 122
    Points
    122
    Par défaut
    Ca affiche mais mais le problème c'est que tu recouvre avec la_map donc tu ne vois plus rien.

    Enfin je crois. Pour vérifier, reprend ton premier code et inverse les deux blit.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SDL_BlitSurface(la_map,NULL,screen,NULL); 
    SDL_BlitSurface(map1.surf_les_tiles,NULL,la_map,NULL); 
    SDL_Flip(screen);

    Si quelque chose s'affiche, alors ma théorie est bonne.
    Mes sites :
    - Portail : http://www.azharis.fr/
    - Neuroshima Hex : http://neuroshima-hex.azharis.fr/
    - Monolith Arena : http://monolith-arena.azharis.fr/

  3. #3
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    Mon but est d'afficher map1.surf_les_tiles sur l'ecran mais en passant pas la_map (ici ça ne sert à rien, j'en suis bien conscient).
    Donc je blit d'abord map1.surf_les_tiles dans la_map, puis la_map dans screen, puis le flip.
    Voila la theorie mais en pratique ça fonctionne pas du tout
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  4. #4
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    aucune idée ?
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  5. #5
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    J'ai trouvé ce qui pause probleme (grace à une nième relecture de la doc..).
    Quand on créé une surface de 8 bits, la palette de couleurs qui lui est associée est vide, donc on ne peut rien afficher si ce n'est du noir
    Deux solutions :
    passer en 16 bits
    créer une palette de 256 couleurs et l'associer à la surface de 8 bits

    Bonne nuit
    Sorry
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

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

Discussions similaires

  1. probleme de blit ?
    Par libellule_eternelle dans le forum SDL
    Réponses: 10
    Dernier message: 15/08/2006, 15h22
  2. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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