Mi idea es hacer un sistemita de iluminacion pero no puedo hacerlo, ayer encontre un codigo en este lugar que modificaba el color de los pixel y como lo que habia intentado hacer no funciono intente usar parte de ese codigo, pero me tira error en el momento en que uso el SDL_DisplayFormatAlpha les dejo en codigo para que lo vean y si pueden ayudarme les estare agradecido.
- Código: Seleccionar todo
SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16,SDL_HWSURFACE|SDL_DOUBLEBUF);
void put_pixel(SDL_Surface *_ima, int x, int y, Uint32 pixel)
{
int bpp = _ima->format->BytesPerPixel;
Uint8 *p = (Uint8 *)_ima->pixels + y * _ima->pitch + x*bpp;
switch (bpp)
{
case 1:
*p = pixel;
break;
case 2:
*(Uint16 *)p = pixel;
break;
case 3:
if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
{
p[0]=(pixel >> 16) & 0xff;
p[1]=(pixel >> 8) & 0xff;
p[2]=pixel & 0xff;
}
else
{
p[0]=pixel & 0xff;
p[1]=(pixel >> 8) & 0xff;
p[2]=(pixel >> 16) & 0xff;
}
break;
case 4:
*(Uint32 *) p = pixel;
break;
}
}
void get_pixel_color (SDL_Surface * imagen, int x, int y, SDL_Color * color)
{
int bpp = imagen->format->BytesPerPixel;
Uint8 *p = (Uint8 *)imagen->pixels + y * imagen->pitch + x * bpp;
SDL_GetRGBA (* (Uint32 *) p, imagen->format,
&(color->r),
&(color->g),
&(color->b),
&(color->unused)
);
}
void set_pixel_color (SDL_Surface * imagen, int x, int y, SDL_Color * color)
{
Uint32 pixel;
pixel = SDL_MapRGBA (imagen->format, color->r, color->g, color->b,
color->unused);
put_pixel (imagen, x, y, pixel);
}
void ini_mi (int m[640][480],int x){ //Inicializa la matris que tendra los valores de transaprencia en cada parte.
int i,j;
for (j=0;j<640;j++){
for(i=0;i<480>Aca me tira Fallo de Segmento
SDL_Color color;
color.r = 0;
color.g = 0;
color.b = 0;
if (SDL_MUSTLOCK (mi))
{
if (SDL_LockSurface (mi) < 0)
return NULL;
}
for (j=0;j<640;j++){
for(i=0;i<480;i++){
color.unused = m[j][i];
set_pixel_color (dst,j,i,&color);
}
}
if (SDL_MUSTLOCK (mi))
SDL_UnlockSurface (mi);
return dst;
}
Esta es el .h que estoy haciendo, la funcion iluminar recibe un PNG. Desde ya muchas gracias.