SDL trasparencias??? como....

SDL trasparencias??? como....

Notapor maije » Mié Mar 26, 2008 7:49 pm

hola a tod@s. tengo un problema. hago caminar a mi personaje en una animacion pero cuando le pongo algun objeto mas peta, porque el fondo que supuestamente habia puesto como trasparente, se come al otro objeto cuando pasa por encima y eso no deberia pasar digo yo... uso SDL y la funcion para asignar alpha es

SDL_SetColorKey(img, SDL_SRCCOLORKEY | SDL_RLEACCEL, SDL_MapRGB(img->format,255,0,0));

que veis, el color alpha que le he puesto es un rojo puro. me gustaria saber que puedo hacer para que cuando pase por encima del objeto mi personaje no lo oculte una zona que deberia ser trasparente...

tambien me gustaria saber si hay alguna forma de dar trasparencia no por un color sino por un rango de colores... como darle mas o menos exactitud (al igual que se hace por ejemplo en el adobe premiere cuando quieres hacer un alpha)

muchas gracias de antemano
atentamente
maije
maije
 
Mensajes: 20
Registrado: Lun Dic 17, 2007 6:20 pm

Notapor Juan Carlos » Mié Mar 26, 2008 11:44 pm

Hola, bueno si no me equivoco, la funcion que escribiste es correcta. El problema debe encontrarse en otro lado del codigo. Si tu codigo es pequeño, puedes postearlo para que lo podamos ver entre todos. Si tu codigo es demasiado grande, intenta crearte y postear un mini-ejemplo que reproduzca el error.

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor maije » Vie Mar 28, 2008 8:54 pm

el codigo esta bien y funciona, el problema es COMO funciona. me intento epxlicar mejor :-)

tengo la ventana vale, y cargo un personaje, con un fondo croma, digamos que rojo puro. lo animo y le hago andar (el fondo de la ventana es negro) y el personaje se mueve sin problemas por la pantalla, pero si meto otro objeto, pongamos una caja, la oclusion no la produce el personaje al pasar por encima, la produce el fondo SUPESTAMENTE trasparente antes de que el personaje llegue a estar sobre la caja en cuestion. pongo un ejemplo:

tengo una imagen con un dibujo dentro. la imagen mide 200 pxls de ancho. el personaje mide 100pxls, esta centrado en la imagen, por lo que sobran 50 pxls de margen a cada lado. vale, el fondo de la imagen es un croma de color rojo por ejemplo. pongo la imagen en mi aplicacion y pongo otra estatica y la cargo a posteriori. cuando muevo la primera imagen, deberia ocultar la segunda cuando pasara por encima el personaje, pero no, la oculta lo que es el fondo "trasparente", esos 50pxls de margen que tenia la imagen estan ocultando la otra imagen cuando supestamente no deberian aparecer porque estan en alpha...

mi codigo entero seria un poco largo para poner, son basicamente dos clases: frame y sprite. tengo 'n' frames por cada sprite y al "andar" lo que hago es que el sprite vaya cargando los frames que le "pertenecen" por orden.

podriais decir: bueno, pues no dejes margen... pero el aspecto visual queda horrendo cuando ves un cuadrado feo moviendose por la pantalla que hace desaparecer objetos sin siquiera estar tocandolos que misteriosamente cuando se ha alejado ese margen se van mostrando poco a poco...

para ilustrar mi problema colgare en una web temporal la carpeta debug con las imagenes y eso y el ejecutable. manejarlo es sencillo: flechas de izquiera y derecha y para salir escape... he exagerado un poco lo que es el margen izquierdo para ejemplificar bien mi problema.

http://maije2.iespana.es/videojuego/

muchas gracias
atentamente
maije
 
Mensajes: 20
Registrado: Lun Dic 17, 2007 6:20 pm


Volver a Videojuegos

¿Quién está conectado?

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

cron