Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas con Blending y Transparencias con OpenGL en C++

Estas en el tema de Problemas con Blending y Transparencias con OpenGL en C++ en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/05/2011, 08:39
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 13 años, 7 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
  #2 (permalink)  
Antiguo 05/05/2011, 12:47
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 14 años
Puntos: 0
Respuesta: Problemas con Blending y Transparencias con OpenGL en C++

Intercambiaste rojo por azul.

Etiquetas: blending, c++, opengl, transparencias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:48.