Voici une question à ajouter dans la FAQ en relation avec http://jeux.developpez.com/faq/sdl/?...odifier_pixels

Pour récupérer un pixel, on peut accéder directement aux pixels grâce au membre pixels de la structure SDL_Surface qui est un pointeur sur les données de pixels.

La fonction suivante sert à récupérer le pixel (x, y) d'une SDL_Surface (tiré de la doc officielle) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Uint32 GetPixel(SDL_Surface* surface, int x, int y)
{
    int bpp = surface->format->BytesPerPixel;
    /*  p est l'addresse du pixel que l'on veut récupérer */
    Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
 
    switch(bpp)
    {
    case 1:
        return *p;
 
    case 2:
        return *(Uint16 *)p;
 
    case 3:
        if(SDL_BYTEORDER == SDL_BIG_ENDIAN)
            return p[0] << 16 | p[1] << 8 | p[2];
        else
            return p[0] | p[1] << 8 | p[2] << 16;
 
    case 4:
        return *(Uint32 *)p;
 
    default:
        return 0;  /* Ne devrait pas arriver, mais supprime les avertissements du compilateur */
    }
}