Bien resulta que estoy haciendo un remake de pippols.
Tengo definidos a los personajes en el Paint y utilizo de fondo un color verde, y los paso FireWorks MX 2004. La pregunta es que como se define ese color verde para que se completamente transparente. ??? el formato es PNG.
Y también como se hacen distintos tonos de niveles de transparencia ???, esto lo quiero aplicar a los fantasmas del bosque.
Estoy teniendo un quebradero de cabeza con este programa (es que no se utilizarlo).
Ayuda sobre los graficos PNG.
¿Qué lenguaje de programación usas? Te lo digo pq yo solo sé (y muy poco por cierto
) de C++ y Allegro, pero... En Allegro (y creo que en otros sistemas tb) el color transparente es el Magenta (R:255 G:0 B:255).
Para lo de los distintos niveles de transparencia, tienes que usar el canal Alpha, en modo 32 bits (rgba). Cuando defines un color en este modo, le das 4 valores: Rojo, Verde, Azul y Alpha (o transparencia). Los gráficos los haces con cualquier programa que soporte esto del canal Alpha, y luego los grabas en BMP, PNG o el formato nativo del programa (P.Ej. PSD en el photoshop).
Léete este otro post y sus respuestas, que se habla de esto del canal alpha y la transparencia...
http://remakeszone.com/foro/viewtopic.php?t=321
No se si te habré servido de ayuda
no es un tema que controle demasiado 

Para lo de los distintos niveles de transparencia, tienes que usar el canal Alpha, en modo 32 bits (rgba). Cuando defines un color en este modo, le das 4 valores: Rojo, Verde, Azul y Alpha (o transparencia). Los gráficos los haces con cualquier programa que soporte esto del canal Alpha, y luego los grabas en BMP, PNG o el formato nativo del programa (P.Ej. PSD en el photoshop).
Léete este otro post y sus respuestas, que se habla de esto del canal alpha y la transparencia...
http://remakeszone.com/foro/viewtopic.php?t=321
No se si te habré servido de ayuda


Lo de canal alpha ya si que lo entiendo.
El lenguaje que estoy usando es c++ con SDL (soy un novato en esto). Aunque el motor del juego aun no lo empezado, pero lo que estoy haciendo son mini aplicaciones para ver como hacer las transparencias y movimientos, lo el color transparente es el Magenta (R:255 G:0 B:255) no lo sabia pero lo ya lo probare cuando llegue a casa.
La verdad que esto de la programación es un mundo muy grande hay tantas librerías y cosas que uno ya se pierde.
¿Donde puedo encontrar buena información de Allegro? ¿Es más fácil que las SDL?
El lenguaje que estoy usando es c++ con SDL (soy un novato en esto). Aunque el motor del juego aun no lo empezado, pero lo que estoy haciendo son mini aplicaciones para ver como hacer las transparencias y movimientos, lo el color transparente es el Magenta (R:255 G:0 B:255) no lo sabia pero lo ya lo probare cuando llegue a casa.
La verdad que esto de la programación es un mundo muy grande hay tantas librerías y cosas que uno ya se pierde.
¿Donde puedo encontrar buena información de Allegro? ¿Es más fácil que las SDL?
Allegro es doscientas veces más fácil de manejar que SDL, a mi ver. Creo que leyendo el tutorial Allegro Vivace (que está un poco desfasado ya, pero que sirve) en quince minutos tendrás tu primera pelotita botando por la pantalla. Además, es una biblioteca que tiene una curva de aprendizaje realmente genial: tras la pequeña debacle de empezar (como todas las cosas), todo empieza a venir solo y en un mes estás programando bonitos efectos raster para tu juego 
http://www.allegro.cc es el sitio de la comunidad de programadores de Allegro. En google puedes encontrar muchos tutoriales, además.

http://www.allegro.cc es el sitio de la comunidad de programadores de Allegro. En google puedes encontrar muchos tutoriales, además.
La misión ha fracasado:
Has perdido tus efectivos.
Has perdido tus efectivos.
Hola.
No se si Allegro es mas facil que SDL, pero yo de SDL se un pelin... no mucho pero lo suficiente para aclararte lo del color key (transparencia).
En SDL puedes usar como transparente el color que quieras... una vez tienes la superficie cargada en memoria le aplicas la funcion
int SDL_SetColorKey(SDL_Surface *surface, Uint32 flag, Uint32 key);
En esa funcion deberias poner como superficie la superficie de la que quieres obtener la transparencia, de flag SDL_RLEACCEL para conseguir aceleracion en la aplicacion del efecto y mejorar los FPS del juego, y en el key va el color que usaras como transparente.
Para obtener un color como un Uint32 debes usar la funcion :
SDL_MapRGB(SDL_PixelFormat *fmt, Uint8 r, Uint8 g, Uint8 b);
Como parametros de la funcion tienes el pixel format que debe ser el de la pantalla o la imagen (deberias hacer que fueran el mismo para acelerar el blit)
Por ejemplo el formato de la pantalla si tienes una variable screen que es un puntero a la superficie, seria:
screen->format
Luego los colores se ponen en RGB entre 0 y 255.
Para aplicarle el canal alpha a esta misma imagen, lo tienes facil. Basta con meterle el valor de 8 bits de alpha a la superficie mediante la funcion:
int SDL_SetAlpha(SDL_Surface *surface, Uint32 flags, Uint8 alpha);
Para las combinaciones de flags, que deberias hacerles pruebas, tienes una tabla en la documentacion de SDL.
http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fSetAlpha
La documentacion de SDL esta muy bien hecha, eso si SDL es muy engorroso... y más si no tienes mucho dominio de C.
Si tienes dudas puedo tratar de resolver alguna.... pero no soy ningun experto.
Bye.
No se si Allegro es mas facil que SDL, pero yo de SDL se un pelin... no mucho pero lo suficiente para aclararte lo del color key (transparencia).
En SDL puedes usar como transparente el color que quieras... una vez tienes la superficie cargada en memoria le aplicas la funcion
int SDL_SetColorKey(SDL_Surface *surface, Uint32 flag, Uint32 key);
En esa funcion deberias poner como superficie la superficie de la que quieres obtener la transparencia, de flag SDL_RLEACCEL para conseguir aceleracion en la aplicacion del efecto y mejorar los FPS del juego, y en el key va el color que usaras como transparente.
Para obtener un color como un Uint32 debes usar la funcion :
SDL_MapRGB(SDL_PixelFormat *fmt, Uint8 r, Uint8 g, Uint8 b);
Como parametros de la funcion tienes el pixel format que debe ser el de la pantalla o la imagen (deberias hacer que fueran el mismo para acelerar el blit)
Por ejemplo el formato de la pantalla si tienes una variable screen que es un puntero a la superficie, seria:
screen->format
Luego los colores se ponen en RGB entre 0 y 255.
Para aplicarle el canal alpha a esta misma imagen, lo tienes facil. Basta con meterle el valor de 8 bits de alpha a la superficie mediante la funcion:
int SDL_SetAlpha(SDL_Surface *surface, Uint32 flags, Uint8 alpha);
Para las combinaciones de flags, que deberias hacerles pruebas, tienes una tabla en la documentacion de SDL.
http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fSetAlpha
La documentacion de SDL esta muy bien hecha, eso si SDL es muy engorroso... y más si no tienes mucho dominio de C.
Si tienes dudas puedo tratar de resolver alguna.... pero no soy ningun experto.
Bye.
- Popolon
- Usuario avanzado
- Posts: 474
- Joined: Tue May 13, 2003 2:31 pm
- Location: Lloret de Mar
- Contact:
En principio, en SDL, si la imagen la tienes guardada en PNG o BMP a 32bits y con el canal alpha definido, la transparencia tiene que aparecer sin que hagas nada.
Yo tuve algún problema, y resultó que el problema era que no sabía generar el canal alpha correctamente con el photoshop. Asegurate de que las imagenes tienen el canal alpha bien generado!
Yo tuve algún problema, y resultó que el problema era que no sabía generar el canal alpha correctamente con el photoshop. Asegurate de que las imagenes tienen el canal alpha bien generado!
Entonces es más fácil.
Empiezo sobre base con un .bmp y ocupa bastante, entonces lo paso a .png al donde genero el color alpha (me ha costado bastante descubrirlo).
Pero como se guarda un PNG a 32 bits. Creo que lo guarda por defecto.
Hay alguna forma de reducir los .png un poco para que ocupen menos y que no pierdan los 32 bits.
Empiezo sobre base con un .bmp y ocupa bastante, entonces lo paso a .png al donde genero el color alpha (me ha costado bastante descubrirlo).
Pero como se guarda un PNG a 32 bits. Creo que lo guarda por defecto.
Hay alguna forma de reducir los .png un poco para que ocupen menos y que no pierdan los 32 bits.
Who is online
Users browsing this forum: No registered users and 2 guests