Affichage maison de BMP

asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005 - 24 nov. 2004 à 15:07
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 27 nov. 2004 à 14:28
Bonjour,
je voudrais savoir comment est codée une image. Avec OpenGL on lui passe les donnéées et hop il affiche mais si on veut afficher point par point comment on fait?? j'ai essayé avec un for mais euhhhh ca me fait un resultat vraiment bizarre
Merci de me répondre

4 réponses

cs_6co Messages postés 114 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 5 avril 2012 1
24 nov. 2004 à 19:10
si tu parles de la structure d'un bitmap, voilà ce que tu aurais pu trouver dans l'aide win32sdk...

typedef struct tagBITMAP { // bm
LONG bmType;
LONG bmWidth;
LONG bmHeight;
LONG bmWidthBytes;
WORD bmPlanes;
WORD bmBitsPixel;
LPVOID bmBits;
} BITMAP;


Members

bmType

Specifies the bitmap type. This member must be zero.

bmWidth

Specifies the width, in pixels, of the bitmap. The width must be greater than zero.

bmHeight

Specifies the height, in pixels, of the bitmap. The height must be greater than zero.

bmWidthBytes

Specifies the number of bytes in each scan line. This value must be divisible by 2, because Windows assumes that the bit values of a bitmap form an array that is word aligned.

bmPlanes

Specifies the count of color planes.

bmBitsPixel

Specifies the number of bits required to indicate the color of a pixel.

bmBits

Points to the location of the bit values for the bitmap. The bmBits member must be a long pointer to an array of character (1-byte) values.

à savoir que pour les bitmap en général (ceux codés sur 24bits), bmBits représente l'adresse d'un tableau contenant pour chaque pixel 3octets (Red,Green,Blue)
taille totale du tableau = bmWidth * bmHeight * 3 (octets)

6co
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
24 nov. 2004 à 20:45
Ouais bah utiliser la WinAPI pour un truc aussi simple qu'un fichier bitmap c'est perdre la portabilité pour rien...

Bref, pour ton histoire d'OpenGL : en fait, habituellement on passe à OpenGL, via glTexImage2D(), l'adresse d'un char* (en général, mais faut convertir en GLvoid*) qui contient les données de ta texture, au format RGB, RGBA...selon les options que tu choisis.

Maintenant, si tu veux afficher un pixel comme tu le veux, il y a glDrawPixels pour ça, mais c'est particulièrement inneficace, parce qu'il y a des conversions entre les formats de mémoire de la RAM et de ta carte à chaque appel à cette fonction...
Bref, utiliser glTexImage2D(), sauf cas bien précis ^^

Si j'ai mal répondu à ta question c'est parce qu'elle n'est pas très bien formulée...^^

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
25 nov. 2004 à 07:29
Bon bah elle était mal formulée alors
En fait ce que je veux faire transformer une image en chiffres comme ds Matrix et pour ca il faut que j'accède au données directement.
Donc pour voir si les donées récuperé ds le fichier était "valide" je les affiches. Quand par ex j'ai un fd rouge ds mon image ,le prog m'affiche des lignes rouge,verte et bleu et dc je me dis qu'un bitmap et bah c codé bizarrement et c ca que je veux savoir
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
27 nov. 2004 à 14:28
Spécification du format BMP par Antoche : http://www.alrj.org/docs/formats/bmp/BMP.htm

Après, pour afficher des caractères par dessus, avec OpenGL tu peux utiliser le stencil buffer pour faire un masque par-dessus l'image affichée.

J'espère avoir bien répondu cette fois, parce que c'est toujours pas si explicite...^^

(tu veux dire quoi par "fd" ???)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
Rejoignez-nous