Estuve luchando con un problema y no puedo encontrarle una solución
satisfactoria, no entiendo que es lo que esta pasando. Trato de cargar un
sprite y que se mezcle con el fondo y la imágen no me queda con
los colores correctos. Estoy creando una superficie temporal para hacer el
Blitting del sprite.
Paso el código que estoy usando:
///*** Cargo los BG's con Blending activado***///
...
SDL_Surface * tempSurface =getSurface(filename,type); /// load the png
file into tempSurface
Uint32 rmask, gmask, bmask, amask;
const SDL_PixelFormat& fmt = *(display->format);
rmask = fmt.Rmask;
gmask = fmt.Gmask;
bmask = fmt.Bmask;
amask = fmt.Amask;
SDL_Surface* destSurface=SDL_CreateRGBSurface(flags,width,heigh t,
fmt.BitsPerPixel,
rmask,gmask,bmask,amask);
SDL_FillRect(destSurface, NULL,
SDL_MapRGBA(destSurface->format,rmask,gmask,bmask,255));
SDL_SetColorKey(destSurface, SDL_SRCCOLORKEY,
SDL_MapRGBA(destSurface->format, rmask,gmask,bmask,255));
BlitSurface(destSurface,tempSurface,0,0,x,y,w,h);/// clip the origin
surface into the destination surface
destSurface = SDL_DisplayFormatAlpha(destSurface);
...
///** Luego uso glTextImage2D para crear una textura con imágen cargada y
hacer el mapping a un rectangulo **////
Ahi funciona el blending con la transparencia, pero los colores de la
imágen quedan muy opacos.
Sin embargo si no uso la función SDL_DisplayFormatAlpha, los colores quedan
bien pero pierdo totalmente la transparencia, y se ve la rana con el
rectangulo de fondo rojo.
Imágen con displayformatalpha
Imágen sin displayformatalpha
Tileset original
No entiendo que esta pasando.
Cualquier ayuda agradecida.
:D