Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/05/2011, 08:39
cbapiaz
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 13 años, 6 meses
Puntos: 0
Exclamación Problemas con Blending y Transparencias con OpenGL en C++

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

Última edición por cbapiaz; 05/05/2011 a las 08:42 Razón: agregado el tileset