Uint32 getpixel(SDL_Surface *surface, int x, int y)
{
int bpp = surface->format->BytesPerPixel;
/ * p est l´adresse du pixel à tester */
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 évite les avertissements */
}
}
Voilà la fonction, après faut penser à locker la surface et unlocker la surface après, ou bien tu peux rajouter le lock/unlock directement dans la fonction getpixek() ; )