Por que no funciona transparencia

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

Por que no funciona transparencia

Notapor Kainz » Mié Sep 14, 2011 10:56 pm

Veran, antes que nada el codigo:
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
int main(int argc, char *argv[]) {
int done=0;
SDL_Surface *screen;
SDL_Surface *escenario01;
SDL_Surface *texto1;
SDL_Surface *fondo;
SDL_Surface *tu;
SDL_Surface *flecha1;
SDL_Surface *flecha2;
SDL_Rect dest;
SDL_Event event;
///////////////////////////////////////
if (SDL_Init(SDL_INIT_VIDEO)==-1) {
printf("No se pudo iniciar el juego Triox-Informer, ahorcado errores: %s\n", SDL_GetError());
SDL_Quit();
exit(-1);
}
///////////////////////////////////
screen=SDL_SetVideoMode(740,600,24, SDL_HWSURFACE);
//////////////////////////////////
SDL_ShowCursor(SDL_DISABLE);
///////////////////////////////////
escenario01=IMG_Load ("scenario/scenario01.png");
tu=IMG_Load("sprites/tu.png");
texto1=IMG_Load("textos/texto1.png");
fondo=IMG_Load("fondo.png");
flecha1=IMG_Load("flecha.png");
flecha2=IMG_Load("flecha.png");
///////////////////////////////////
dest.x=89;
dest.y=100;
SDL_BlitSurface(escenario01,NULL,screen,&dest);
SDL_Flip(screen);
dest.x=237;
dest.y=243;
SDL_SetColorKey(tu,SDL_SRCCOLORKEY,SDL_MapRGBA(tu->format,153,153,153,0));
SDL_BlitSurface(tu,NULL,screen,&dest);
SDL_Flip(screen);


como podran ver ha una imagen con transparencia, (es un gris un poco ams fuerte del que te trae paint)
en el cuentagotas de paint sale asi:
Matiz:160 Rojo:153
Sat:0 Verde:153
Llum:144 Azul:153

pero el caso es que la transparencia no funciona, se queda con el gris, no se que hacer
Kainz
 
Mensajes: 9
Registrado: Mar Ago 30, 2011 6:05 pm

Re: Por que no funciona transparencia

Notapor Juanxo » Mar Oct 11, 2011 1:14 am

hace un montón que no toco SDL, pero si no me equivoco tu problema está en la pantalla:

screen=SDL_SetVideoMode(740,600,24, SDL_HWSURFACE);

el tercer parámetro de esa función es el numero de bits por pixel. Teniendo en cuenta que cada color son 8 bits (RGB A) en tu caso solo usas los 24/8 = 3 primeros canales (RGB) por lo que no puedes usar transparencias. Prueba a subir ese número a 32
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado