Color transparente

Started by fulgorelizz, December 07, 2012, 02:34:27 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

fulgorelizz

Buenos dias gente bennu!!! saludos  8) tiempo que no pasaba por aca!! acabo de hacer la reciente adquisicion de un equipazo y ando super motivado a culminar mis proyectos, pero queria arrancar despejandome una duda, existe alguna manera de asignar un color transparente a bennu distinto de 0,0,0 (RGB) ??? .... que por ejemplo uno pueda usar un color que realmente sea de poco uso dentro del diseño, ejemplo, un verde muy vivo o fussia muy vivo??? ...
Compiling code -- generating exe...

FreeYourMind

cambiando los colores del pixel en el mapa

DCelso

Si usas pngs y fpgs de 32 bits no tienes esa limitacion.(es decir usar alfas)
Pero solo el transparente puro sera el negro rgb. 000 con alfa 0.
Ya se ha explicado.muchas veces en el foro. Usa el buscador para encontrar mas info.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

en 32 bits lo puedes hacer transparente, pero no dejara de colisionar u otra cosas...

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

#4
Exacto SplingerGU, eso mismo quise decirle.

A ver fulgorelizz, BennuGD soporta básicamente tres profundidades de color: 8 bit, 16 bits y 32 bits.

En 8 bits funciona de la siguiente forma con las imágenes. Usa una paleta de 256 colores, y así cada color viene representado por un número del 0 al 255. Por convenio se decidió, ya en DIV, que el valor 0 indicase color transparente, así que el valor de la paleta de la posición 0 no se usa en bennu, da igual el color que sea, negro, rosa, verde, etc, que bennu no lo mostrará, es transparente.

Asi que en modo 8 bits: si creas tus imágenes en un programa de dibujo en 8 bits, tienes que tener en cuenta que el color que uses en el índice 0 de tu paleta, será el color que bennuGD interpretará como transparente. Es decir, en imágenes de 8bits puedes usar el color que quieras como transparente siempre y cuando lo pongas el primero de tu paleta de colores.

En 16 bits funciona de la siguiente forma. Usa  5 bits para el color Rojo, 6 bits para el color Verde y 5 bits para el color Azul. (5+6+5 = 16 bits). Por convenio se decidió, ya en Fenix, que el valor 0 indicase color transparente.
En este caso, hay pocos formatos de fichero de imagen que soporan imágenes de 16 bits RGB, por ejemplo, el que más usamos, PNG, no lo soporta. Por ello se usan PNGs RGB de 24 bits, la única diferencia entre 24 bits y 16 bits, es que en 24 usamos 8 bits para R, 8 para G y 8 para B. Bennu cuando carga un png de 24 bits lo convierte a 16 para mostrarlo en pantalla.

Así que en modo 16 bit, cuando crees tus imágenes desde un programa externo en 24 bits (o 16 si te lo permite) tienes que tener en cuenta que el color negro (RBG 0,0,0) bennu lo interpretará como transparente. Es decir, en una imagen de 16 bits, no puedes usar otro color como transparente para bennu, solo el negro puro por limitaciones.

En 32 bits se añade una componente más que solventa el problema de las tranparencias, la componente alfa, aquí un pixel se representa por 8 bits para el Rojo, 8 bits para el verde, 8 bits para el azul y 8 bits para la opacidad (o transparencia, llamada comonente alfa) 8+8+8+8 = 32.
la componente alfa, con valor 0 hace que el color RGB no se mueste en pantalla, mientras que la componente alfa con valor 255 hace que se muestre el color por completo tapando lo que hubiera antes en ese pixel, pero dentro del rango 0-255 cualquier valor hace que sea semitransparente ese pixel, osea se mezcle con los colores anteriores que hubiera en ese pixel antes de intentar pintarse éste último.
Por convenio en BennuGD, el color transparente RGBA (0,0,0,0) es el único transparente que no provoca colisiones. Es decir, si en una imagen usamos el color 255,0,0,0 (color rojo con componente alfa a 0, es decir no se ve, es transparente) cuando usemos la función de colisiones nos devolverá que se está colisionando con él, ya que no es el (0,0,0,0) podriamos decir que se produce un efecto cristal, no se ve pero podemos darnos un ostiazo contra él.

Así que en modo 32 bits, si creamos imágenes con un progama externo, tendremos que tener en cuenta que antes de convertir a transparente una zona, ésta sea de color negro puro (RBG0,0,0) para que al hacerse transparente, el pixel guarde detrás un RGBA(0,0,0,0)  y bennuGD, no choque con ese pixel, ya que si hacemos transparente un color verde desde el programa, guardará un pixel (0,255,0,0) que hace que no se vea en pantalla, pero hace que bennu colixione con ese pixel.

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

si, si, se que has querido decir eso... solo profundice un poco mas de datos....
ahora si te has explayado mas...

genial!
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

;).
Bueno, queda ahora decir también las posibles combinaciones.
En modo 8 bits de bennu, no se pueden cargar imágenes de 16, 24 o 32 bits. Solo imágenes de 8 bits.
En modo 16 bits de bennu, se pueden cargar imágenes de 8 bits de la misma forma que se comentó para 8 bits.
Se pueden cargar imágenes de 24 y 16 bits como se explicó anteriormente
Se pueden cagar imágenes de 32 bits donde se interpretará la componente alfa  de 0 a126 como transparente, y de 127 a 255 como color puro.
En modo 32 bits, las imágenes de 24 y 16 bits se cargan sin usar el negro como transparente, así que el negro se verá, a diferencia que en modo 16 bits.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

gecko

Torres Baldi Studio
http://torresbaldi.com

DCelso

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

fulgorelizz

 :P bueno mejores respuestas imposibles!! aunque ya lo de los juegos en 16 empiezan a ser desplazados siempre surgio la duda en mi en cuanto a los 16bits, ya que he visto juegos de plataformas en la que usan bordes negros para sus sprites y obvio el recuadro del sprite es transparente xD ... pero a 32 bits obvio que no hace falta xD
Compiling code -- generating exe...

DCelso

Pues no te entendí aún. Claro que en modo 16 puedes usar negros, el rgb (1,0,0) es casi exactamente igual al negro (0,0,0) y éste no se ve transparente en bennuGD.

En cuanto a tu pregunta inicial de ¿Se pueden usar otros colores distinto del negro como transparente? la respuesta sería, si usas imágenes de 8 bits, sí. pon el color que quieras usar como transparente como el primero de tu paleta de colores. Si usas imágenes de 16 o 24 bits, no. Y si usas imágenes de 32 bits pues si quieres que sea transparente que no colisione con otros procesos entonces la respuesta es tampoco, es más no debes de usar en la herramienta externa el poner a transparente una zona hasta no ponerla antes en negro 0,0,0 y ya después debes poner esa zona en transparente, para que bennu funcione bien y no colisione.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

KeoH

Pues me alegro q lo hayas explicado DCelso .. yo creia q en 32bits los pixeles tapados por el alpha no colisionaban xD bueno saberlo.

KeoH

Otra cosa q se me ha ocurrido de repente xD mientras pulsaba el boton de enviar del mensaje anterior xDDDD Seria una pasada poder cambiar el mapa del canal alpha en una imagen de 32bits.


Por ejemplo: Tengo un grafico de casi el tamaño de la pantalla en mi juego, el grafico es un mapa que se va descubriendo segun el jugador avanza. No me refiero a la niebla negra de los juegos de estrategia. Imaginad un mapa, geografico. Donde solo aparece descubierta una zona donde esta el jugador, y si el jugador llega a otra zona, pues otra zona del mapa es descubierta.


En mi ejemplo habria dos dibujos. Uno sería el mapa completo. Otro seria una especie de mapa como el anterior de color marron, q se va volviendo transparente por parches o zonas segun el jugador llega. cambiando el alpha se podria hacer. Tambien creando unos pocos procesos con trozos del mapa que se destruirían y dejarian a la vista el mapa xDD pero molaria cambiar el alpha xDD O el canal alpha del grafico de un proceso, se cambia el grafico pero ese alpha alterado permanece. No me refiero a hacerle un alpha=50; , sino a hacer una parte del grafico mas transparente q otra .. o totalmente transparente .. yo q se .. se me acaba de ocurrir xDD

fulgorelizz

Quote from: DCelso on December 08, 2012, 07:25:19 PM
Pues no te entendí aún. Claro que en modo 16 puedes usar negros, el rgb (1,0,0) es casi exactamente igual al negro (0,0,0) y éste no se ve transparente en bennuGD.

En cuanto a tu pregunta inicial de ¿Se pueden usar otros colores distinto del negro como transparente? la respuesta sería, si usas imágenes de 8 bits, sí. pon el color que quieras usar como transparente como el primero de tu paleta de colores. Si usas imágenes de 16 o 24 bits, no. Y si usas imágenes de 32 bits pues si quieres que sea transparente que no colisione con otros procesos entonces la respuesta es tampoco, es más no debes de usar en la herramienta externa el poner a transparente una zona hasta no ponerla antes en negro 0,0,0 y ya después debes poner esa zona en transparente, para que bennu funcione bien y no colisione.

excelente DCelso!! todos los dias se aprende algo nuevo!! muchisimas gracias!! cosas como estas no las olvido xD
Compiling code -- generating exe...