begin process at 2012 05 29 01:17:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

Couleur d'un pixel d'une fenêtre glut en mode RGB


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Couleur d'un pixel d'une fenêtre glut en mode RGB

lundi 14 mars 2005 à 17:56:02 | Couleur d'un pixel d'une fenêtre glut en mode RGB

bigbara

      Bonjour à tous,
Je voudrais savoir s'il existait une fonction permettant de récupérer les composantes
de la couleur d'un pixel de coordonnées (x,y) d'une fenêtre opengl (glut)
en mode RGBA... 
  J'ai en fait charger une image .ppm avec la fonction suivante et voudrais utiliser les
couleurs de chaque pixel pour une une comparaison...  merci de votre réponse!!!


typedef struct {
    int sizeX, sizeY;
    GLubyte *data;
} PPMImage;

static PPMImage *LoadPPM(const char *filename)
{
    char buff[16];
    PPMImage *result;
    FILE *fp;
    int maxval,lig_comm=0;

    fp = fopen(filename, "rb");
    if (!fp)
    {
fprintf(stderr, "Unable to open file `%s'\n", filename);
exit(1);
    }

    if (fread(buff, 1, 3, fp)!=3)
    {
perror(filename);
exit(1);
    }

    if (buff[0] != 'P' || buff[1] != '6')
    {
fprintf(stderr, "Invalid image format (must be `P6')\n");
exit(1);
    }

    if (buff[2] != 0x0a)
      fseek(fp,-1,SEEK_CUR);

    while (fgetc(fp) == '#'){
      lig_comm++;
      while (fgetc(fp) != '\n')
;
      }

    fseek(fp,-1,SEEK_CUR);

    result = (PPMImage *)malloc(sizeof(PPMImage));
    if (!result)
    {
fprintf(stderr, "Unable to allocate memory\n");
exit(1);
    }

    if (fscanf(fp, "%d %d", &result->sizeX, &result->sizeY) != 2)
    {
fprintf(stderr, "Error loading image `%s'\n", filename);
exit(1);
    }

    if (fscanf(fp, "%d", &maxval) != 1)
    {
fprintf(stderr, "Error loading image `%s'\n", filename);
exit(1);
    }

    while (fgetc(fp) != '\n')
;

    result->data = (GLubyte *)malloc(3 * result->sizeX * result->sizeY);
    if (!result)
    {
fprintf(stderr, "Unable to allocate memory\n");
exit(1);
    }

    if (fread(result->data, 3 * result->sizeX, result->sizeY, fp) != result->sizeY)
    {
fprintf(stderr, "Error loading image `%s'\n", filename);
exit(1);
    }

    fclose(fp);

    return result;
}
lundi 14 mars 2005 à 22:18:18 | Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

KeniiyK

Membre Club

Ouaip ca existe, regardes du cote de glReadPixel / et glReadBuffer au cas ou tu sois en double buffer.

@+, KeniiyK.

mardi 15 mars 2005 à 11:46:02 | Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

bigbara

Merci de ta réponse Keniiyk, mais en fait,  glReadPixels(GLint x,GLint y,GLsizei l,
GLsizei
h,GLenum format,GLenum type,GLvoid *pixels
) renvoie dans pixels le
contenu
d'une zone rectangulaire lue dans le tampon chromatique et moi je voudrais
savoir s'il était possible de juste répurer
format, donc la composante de la couleur,
dans
une variable x par exemple de même type que type... j'espère qu'il existe
un moyen, merci.
mardi 15 mars 2005 à 11:56:00 | Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

KeniiyK

Membre Club

Et ben tu fais
GLubyte pixel[4];
glReadPixels(x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,pixel);

et apres pixel[0] == composante rouge, pixel[1] == composante vert, pixel[2] == composante bleue, pixel[3] == composante alpha.



KeniiyK

mardi 15 mars 2005 à 17:46:00 | Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

bigbara

Je te remercie Keniiyk, grace à toi j'y vois plus claire, car en effet cela m'a l'air de
marcher pas mal ... merci encore et à la prochaine astuce!!!

samedi 19 mars 2005 à 02:15:53 | Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

bigbara

En fin de compte, pixel[0] == composante rouge, pixel[1] == composante vert, pixel[2] == composante bleue, pixel[3] == composante alpha. ne donnent pas les valeurs
qu'il faut après avoir chargé image .ppm... je ne sais pas si c'est un problème
d'initialisation... mais je n'arrive pas à voir ce que c'est, est-ce peut être un
problème d'initialisation?

samedi 19 mars 2005 à 18:40:02 | Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

KeniiyK

Membre Club

glReadPixels(x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,pixel);

cet appel lis en x,y coord fenetre sur un carre 1*1, c'est peut-etre ca....

(si pa ca di clairement ce que tu veu faire)


KeniiyK
mardi 22 mars 2005 à 13:08:58 | Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

bigbara

En fait j'ai les 2 déclarations suivantes: GLubyte *image et GLubyte pixels[4].
Mon image est chargé dans *image que j'affiche avec glDrawPixels(...) et jusque là,
pas de problème. Mais j'ai remarqué que lorsque je chargais l'image complète dans
pixel[4] avec glReadPixels(x,y,width,height,GL_RGBA,GL_UNSIGNED_BYTE,pixel),
printf("La composante rouge est : %u\n",pixel[0]);
printf("La composante verte est : %u\n",pixel[1]);
printf("La composante bleue est : %u\n",pixel[2]);
printf("La composante alpha est : %u\n",pixel[3]);
ne m'affichent pas les mêmes résultats que
printf("La composante rouge est : %u\n",image[0]);
printf("La composante verte est : %u\n",image[1]);
printf("La composante bleue est : %u\n",image[2]);
printf("La composante alpha est : %u\n",image[3]);
qui eux m'ont paru plus logique vu la couleur de l'image affiché. Mais, comme je
voudrais travailler avec la couleur de chaque pixel, je me dis peut être que
je travaillerai avec des composantes couleur fausses lorsque je vais charger un pixel
avec lReadPixels(x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,pixel), vu que le
résultat n'a pas été satisfaisant sur l'image complète...

mardi 22 mars 2005 à 13:31:02 | Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

KeniiyK

Membre Club

Ok mais glReadPixel fonctionne en coordonnée fenetre (== coord souris) et glDrawPixel() marche avec la position de trame active donc surement que tu lis des valeurs qui sont bien dans l'image mais qui ne sont pas au meme coordonnées, tu vois ce que je veux dire...?

KeniiyK
vendredi 16 décembre 2005 à 13:09:00 | Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

Mattpbem

il est aussi possible que ton image soit en RGB et non en RGBA


Cette discussion est classée dans : filename, exit, result, fp, fprintf


Répondre à ce message

Sujets en rapport avec ce message

pb ecriture ds fichier [ par YOHANONEILL ] bonjour, voila j'ai un programme ou j'écrit dans un fichier des lignes, mais parfois la ligne que j'insert dans le fichier s'écrit 20000 ou 60000 foi ... dans le prototype d'une fonction [ par wizzo ] bonjour !Alors voila, je voulais faire une fonction qui en une ligne me permette d'ecris dans un fichier, cad que d'habitude pour faire ça, on fait : ECRITURE FICHIER LOGFONT [ par lectpe ] Bonjourdans mon application, j'utilise un fenêtre de dialogue de sélection de police d'écriture :VOID SelectMainFont(HWND hwnd, HWND hRichEdit){   Zer [UNIX]1 producteur N consomateurs [ par epmi212 ] bonjour je doit rendre le probleme 1 prducteur N consomateurs la semaine prochaine mais j'ai un probleme de code je vois le probleme est ce que vous Retour MySQL [ par Xantra ] Bonjour,J'ai un petit problème avec le code suivant :#include #include #include #include int main(){    int var;    MYSQ Gros problème sur les fichiers en C [ par Zworykin ] Bjr à tous voià dans le cadre d'un tp je dois faire les fichiers de mon programme. j'arrive à écrire dans mon fichier mais je calle trop et c'est pas fichiers en C [ par boualiasma ] Salut, 1) Dans mon travail, j'utilise des fichiers. je crée un fichier "essai.txt" pour le remplir fp = fopen("essai.txt","w"); // je fais des tra ouverture d'un gros fichier txt ( taille > 3Mo) [ par malouve ] Bonjour, J'ai a traité des fichiers txt de valeurs dont je ne connais pas le nombre d'elements mais qui font plus de 3Mo. J'ai essayé la fonction fre problème de libération de l'éspace dynamique alloué [ par boualiasma ] Bonsoir, J'ai un fichier contient deux champs: objet et attribut nommé "exemple.txt" : 2 11 4 11 10 10 5 O1 ..... ..... Sachant que on a la même tai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales