Lire les pixels d'une SDL_Surface - C++ - Programmation
Marsh Posté le 23-03-2005 à 19:30:35
bon ok je crois que j'ai trouver,
grace a : http://sdldoc.csn.ul.ie/sdlpixelformat.php
apperement les 0 et 1 etaient des indices, tout simplement
Marsh Posté le 23-03-2005 à 21:22:33
TTF_RenderText_Solid t'a surement renvoyé une surface 8 bits utilisant une palette de couleurs (2 apparement).
Tu peux vérifier çà en regardant si fond->format->BitsPerPixel == 8. Si oui, tu peux aller jeter un oeil dans fond->format->palette :
Code :
|
Pour faire ce genre de parcour de buffer image comme tu fais, utilise une fonction getpixel qui se comporte différemment suivant le type de surface.
Dans ca cas, tu obtiens apparement une surface 8 bits, ce qui explique le fait que tu ais fond->w*fond->h valeurs et non pas fond->w*fond->h*3 (pour avoir les triplets RGB).
Tu peux écire les fonctions toi-même avec la doc ( http://sdldoc.csn.ul.ie/guidevideo.php#AEN112) ou bien utiliser SGE par exemple : http://www.digitalfanatics.org/cal/sge/ et sge_GetPixel (http://www.digitalfanatics.org/cal/sge/docs/pixels.html#sge_GetPixel)
Voilà, @+
Marsh Posté le 23-03-2005 à 23:35:25
ok, merci d'avoir répondu, ca confirme ce que je pensait, et merci aussi pour ce complément d'informations.
Marsh Posté le 23-03-2005 à 17:29:26
Bonjour,
J'aimerais bien parvenir a interpreter les "pixels" (lire leur valeur rgb) d'une SDL_Surface, seulement y'as un truc que je comprend pas,
Si par exemple j'ai obtenu ma surface via un LoadBMP , ben la tout va bien, mais j'essaye avec par exemple SDL_CreateRGBSurface, ou TTF_RenderText_Solid, ben la je ne lis que des 0 ou des 1
exemple:
si je fais :
ben la pas de stress, j'ai bien les meme valeur rgb que dans la bmp, et si je fais:
Ben la, je voudrais lire des 50 la ou le texte apparait, et des zero ailleurs (vous voyez ce que je veux dire?) seulement, je n'ai que des zero et des "1" , et je comprend pas ce que ca represente? de plus on dirait que y'as pas autant de pixel que w*h, vu que dans le 2ème cas, si je met (df<fond->w*fond->h*3) comme condition du for, ca fait un seg fault.
Quelque peut il m'eclairer ?