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 :

Taille Sprite=multiple de 4 ???


Sujet :

C

  1. #1
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut Taille Sprite=multiple de 4 ???
    J'ai essayé de lire un sprite de format bmp et j'ai vu qu'il étati déformé. Après un certain temps on m'a averti qu'il fallait que la taille soit un multiple de 4 (sur le web il est dit 4 ou 8 parfois mais avec 4 ca marche).
    Effectivement, le code ci dessous ne marche que si la taille est un multiple de 4, mais j'aimerais comprendre pourquoi ...quelqu'un peut il m'expliquer ?
    Merci

    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
     
    int LireSpriteBmp(unsigned char *fichier, unsigned TheX, unsigned TheY)
    {
      unsigned char pal[256][3];
      unsigned char point;
      unsigned i,u,z,avance=64000;
      unsigned char ch;
      unsigned long int Taille; /*taille de l'image(de la zone data)*/
      unsigned long int Debut,AdPalette; /*Debut de la zone data et adresse de la palette*/
      int ch1=30;
      int ch2=43;
      FILE *TheFile;
     
      TheFile=fopen(fichier,"rb"); /*ouverture en lecture binaire*/
      if(!TheFile) exit(-1);
     
      if(fgetc(TheFile)=='B'&&fgetc(TheFile)=='M')  /*vérifie qu'il s'agit d'un fichier bmp*/
      {
        fseek(TheFile,10,0);
        fread(&Debut,sizeof(long int),1,TheFile);  /*lit l'adresse de la zone data*/
        AdPalette=Debut-1024; /*car la palette est cod‚e sur 1024 octets*/
        LirePal(TheFile,AdPalette); /*charge la palette de l'image*/
        fseek(TheFile,34,0);
        fread(&Taille,sizeof(long int),1,TheFile);
        printf("%u", Debut);
        fseek(TheFile,Debut,0); /*se positionne sur la zone de donn‚e de l'image*/
        for(u=ch2;u>0;u--) // boucle sur le nombre de lignes
           for(z=0;z<=ch1-1;z++) // boucle sur le nombre de points sur une ligne
           {
    	  /*Effet transparence*/
    	  point=fgetc(TheFile);
    	  //if(point!=0) // Si la couleur est diff‚rente de 0
    	    pEcran[320*(TheY+u)+TheX+z]=(unsigned char)point;
    	    /* Copie le point courant vers l'‚cran virtuel ou r‚el */
           }
           fclose(TheFile);
      }
      return 1;
    }
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Parce que les bmp sont fouttus comme ça.

  3. #3
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Parce que les bmp sont fouttus comme ça.
    ...intéressant mais si on pouvait m'en dire plus...
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Tu lis une image... cette image est au format bitmap ... le format bitmap spécifie que la largeur des lignes doit être un multiple de 4 ...
    http://www.chez.com/pageasm/docs/indep/bmp.htm#4

    D'une manière générale, si tu étudies un fichier, jette un oeil ici :
    http://www.wotsit.org/

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/10/2014, 18h53
  2. [Flex4] sprite et taille parent (fenetre)
    Par nma dans le forum Flex
    Réponses: 0
    Dernier message: 05/10/2013, 15h50
  3. Favicon de tailles multiples et transparentes
    Par sergeh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/06/2013, 11h16
  4. multiplication matricielle de matrice carre de taille 2^n
    Par ghassenus dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 07/11/2010, 05h26
  5. Binaire avec une taille multiple de 512
    Par SteelBox dans le forum Linux
    Réponses: 3
    Dernier message: 09/06/2006, 13h29

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