bigbara
Messages postés5Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention22 mars 2005
-
14 mars 2005 à 17:56
Mattpbem
Messages postés46Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention31 juillet 2006
-
16 déc. 2005 à 13:09
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;
bigbara
Messages postés5Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention22 mars 2005 15 mars 2005 à 11:46
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.
bigbara
Messages postés5Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention22 mars 2005 19 mars 2005 à 02:15
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?
bigbara
Messages postés5Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention22 mars 2005 22 mars 2005 à 13:08
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...
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 22 mars 2005 à 13:31
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...?