Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
977 connectés 

  FORUM HardWare.fr
  Programmation
  C

  SDL_GetRGB (résolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SDL_GetRGB (résolu)

n°1919675
Nykos728
Posté le 30-08-2009 à 18:53:55  profilanswer
 

Bonjour, je ne comprend pas le premier paramètre de la fonction :  
 
                            void SDL_GetRGB(Uint32 pixel, SDL_PixelFormat *fmt, Uint8 *r, Uint8 *g, Uint8 *b);
 
Je cherche à savoir comment initialiser "Uint32 pixel;", et aussi ce qu'est le deuxième paramètre (quelles valeurs mon pointeur peut-il prendre ?).
 
Merci


Message édité par Nykos728 le 01-09-2009 à 16:32:27
mood
Publicité
Posté le 30-08-2009 à 18:53:55  profilanswer
 

n°1919683
theshockwa​ve
I work at a firm named Koslow
Posté le 30-08-2009 à 19:36:46  profilanswer
 

c'est une fonction pour récupérer les composantes R, G et B d'un pixel donné dans un format donné. En toute logique, tu vas utiliser ca sur un pixel d'une surface que tu connais. Dans ta structure de surface, tu devrais trouver le format qu'elle utilise, et une fois que tu as déterminé quel pixel tu voulais décomposer, tu le passes à cette fonction.


---------------
last.fm
n°1919685
Nykos728
Posté le 30-08-2009 à 19:42:13  profilanswer
 

ok, mais je ne vois pas comment designer le pixel que je souhaite décomposer, je suppose que c'est avec Uint32 pixel (le premier paramètre), mais je ne comprend pas comment cela fonctionne :s
 
Merci quand même de m'avoir eclairé =)

n°1919699
Nykos728
Posté le 30-08-2009 à 21:21:31  profilanswer
 

Voila mon code pour tester cette fonction :

Code :
  1. #include <iostream>
  2. #include <SDL.h>
  3. using namespace std;
  4. int main (int argc, char *argv[])
  5. {
  6.     Uint8 *r=NULL, *g=NULL, *b=NULL;
  7.     Uint32 pixel=64000;
  8.     SDL_PixelFormat *fmt=NULL;
  9.     // initialize SDL video
  10.     if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
  11.     {
  12.         printf( "Unable to init SDL: %s\n", SDL_GetError() );
  13.         return 1;
  14.     }
  15.     // make sure SDL cleans up before exit
  16.     atexit(SDL_Quit);
  17.     // create a new window
  18.     SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32,SDL_HWSURFACE|SDL_DOUBLEBUF);
  19.     if ( !screen )
  20.     {
  21.         printf("Unable to set 640x480 video: %s\n", SDL_GetError());
  22.         return 1;
  23.     }
  24.     bool done = false;
  25.     while (!done)
  26.     {
  27.         // message processing loop
  28.         SDL_Event event;
  29.         while (SDL_PollEvent(&event))
  30.         {
  31.             // check for messages
  32.             switch (event.type)
  33.             {
  34.                 // exit if the window is closed
  35.             case SDL_QUIT:
  36.                 done = true;
  37.                 break;
  38.                 // check for keypresses
  39.             case SDL_KEYDOWN:
  40.                 {
  41.                     // exit if ESCAPE is pressed
  42.                     if (event.key.keysym.sym == SDLK_ESCAPE)
  43.                         done = true;
  44.                     break;
  45.                 }
  46.             } // end switch
  47.         } // end of message processing
  48.         SDL_Flip(screen);
  49.     } // end main loop
  50.     SDL_GetRGB(pixel,fmt,r,g,b);
  51.     cout<<"format screen : "<<screen->format<<endl;
  52.     printf("R : %s\nG : %s\nB : %s\n",r,g,b);
  53.     cout<<"format : "<<fmt<<endl;
  54.     // all is well ;)
  55.     printf("Exited cleanly\n" );
  56.     return 0;
  57. }


 
Et quand je le lance lors de la fermeture du programme il ferme mais avec erreur : Process terminated with status 3 (0 minutes, 1 seconds)
Pourriez-vous m'expliquer ma ou mes erreurs svp.
 
Merci


Message édité par Nykos728 le 30-08-2009 à 21:29:09
n°1919722
theshockwa​ve
I work at a firm named Koslow
Posté le 31-08-2009 à 00:20:11  profilanswer
 

ligne 59, c'est tout faux
 
Edit : Ligne 57, tu passes fmt qui vaut NULL lorsque tu appelles SDL_GetRGB ... C'est toi qui est censé lui décrire le format du pixel à décomposer, donc il ne peut pas le deviner magiquement !


Message édité par theshockwave le 31-08-2009 à 02:41:19

---------------
last.fm
n°1920364
Nykos728
Posté le 01-09-2009 à 15:51:52  profilanswer
 

a oui merci =)

n°1920380
Nykos728
Posté le 01-09-2009 à 16:13:43  profilanswer
 

En plus j'avais oublié plein d'autre trucs (genre *r=??? et l'adresse du pixel) XD
 
Merci pour tout =)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  SDL_GetRGB (résolu)

 

Sujets relatifs
[Résolu] Génération flux RSS - Format de date[Résolu] [BATCH] Tracer la commande delete
[Algo][Résolu]Générer tous les accords.sendAndLoad pas de retour sous flash {résolu}
Problème d'authentification avec sha1[RESOLU][Résolu] Expressions régulières... je bloque. :(
[Résolu] CSS lien en block absolu sur IE[Résolu][MySQL] Jointure à 5 tables
[RESOLU]couper un stringIntitulé d'un évènement sur 2 listes déroulantes [RESOLU]
Plus de sujets relatifs à : SDL_GetRGB (résolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR