color transaparente en bennu

Started by Soviet, November 29, 2013, 05:07:16 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Soviet

Hola a todos!!
quiza este tema ha sido mas que hablado, pero no he logrado encontrar un tema que satisfaga mi duda...
de un tiempo a esta parte me he estado pasando paulatinamente de fenix a bennu, sin embargo mientras he hecho algun que otro programejo, a la hora de probarlos con imagenes png, resulta que los cuadrados negros (rgb(0,0,0)) se siguen viendo como si no fuesen transparente, llegue a pensar que quizas fuese algun problema del editor de imagenes-paint tool sai- que uso, pero tome algunos viejos png(de 32 bits) que se veian con negro transparente en fenix, y sorpreasa!! en bennu siguen viendose los infames cuadrados negros de la imagen, alguien me podria dar una pista de en que estoy fallando??
Saludos!!

Yawin

¿A cuanta profundidad de color seteas el juego? Recuerda que si trabajas a 32 bits, para hacer un color transparente tienes que asignarle el canal Alpha. O sea, En put_pixel deberías de usar la función RGBA y no RGB.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

panreyes

RGBA(0,0,0,0) es transparente :)


En 8 bits el color 0 es el transparente.


Y en 16 bits... no te sabría decir :?

laghengar

Me parece que en 16 bits es el rgb(0,0,0).

La diferencia con 32 bits es que puedes usar el rgb(0,0,0,255) como oscuridad total detectable en colisiones. Necesito confirmación de esto.


!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Soviet

bueno, al final probe con la funcion map_get_pixel y me devuelve que el valor que deberia ser negro sale como -16777216, alguien sabria que significa aquello, o la falla sera de los editores de imagenes que estoy usando(paint tool sai, mspaint)?
ah! y gracias por responder, chicos!

laghengar

#5
Es posible que sea correcto, tengo entendido que cada tarjeta tiene un valor diferente para cada color. La mejor manera de conocer el color es mirando sus valores rgb, eso esto es: cantidad de rojo, verde y azul, como imaginas. Si quieres conocer qué color tienes lo mejor es que uses rgb_get(), y en sus parámetros señalas el offset de las variables dónde quieres guardar el valor. Esto sería:

rgb_get(map_get_pixel(libreria,grafico,x,y), &rojo, &verde, &azul);

Por supuesto que si lo único que quieres es copiar un color para otra parte, no te hace falta conocer estos valores.

También tienes rgba_get(), donde se añade un último parámetro para guardar el alpha.

Por otro lado, te recomiendo manejar un editor gráfico que maneje con canales alpha, ya que estos son la base para las transparencias. Como comprenderás, mspaint no lo hace y te coloca un negro no transparente.

Un saludo.

http://wiki.bennugd.org/index.php?title=Get_rgb
http://wiki.bennugd.org/index.php?title=Rgba_get
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Soviet

#6
Quote from: laghengar on November 29, 2013, 04:29:57 PM
Es posible que sea correcto, tengo entendido que cada tarjeta tiene un valor diferente para cada color. La mejor manera de conocer el color es mirando sus valores rgb, eso esto es: cantidad de rojo, verde y azul, como imaginas. Si quieres conocer qué color tienes lo mejor es que uses rgb_get(), y en sus parámetros señalas el offset de las variables dónde quieres guardar el valor. Esto sería:

rgb_get(map_get_pixel(libreria,grafico,x,y), &rojo, &verde, &azul);

Por supuesto que si lo único que quieres es copiar un color para otra parte, no te hace falta conocer estos valores.

También tienes rgba_get(), donde se añade un último parámetro para guardar el alpha.

Por otro lado, te recomiendo manejar un editor gráfico que maneje con canales alpha, ya que estos son la base para las transparencias. Como comprenderás, mspaint no lo hace y te coloca un negro no transparente.

Un saludo.

http://wiki.bennugd.org/index.php?title=Get_rgb
http://wiki.bennugd.org/index.php?title=Rgba_get
en efecto, use la funcion rgba_get y el alpha me da como valor 255
gracias langhengar, estaba sospechando que esto ultimo podia ser la falla, cambiare a otro editor de imagenes o complementare con gimp...
saludos!!

laghengar

De todos modos, en 16 bits tienes el negro de paint como transparente. No podrás usar gráficos con diferentes grados de transparencias, aunque hay otras funciones que te hacen cálculos para hacer una imitación, eso sí, tengo entendido que estas funciones son muy lentas.
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Soviet

Quote from: laghengar on November 29, 2013, 06:22:08 PM
De todos modos, en 16 bits tienes el negro de paint como transparente. No podrás usar gráficos con diferentes grados de transparencias, aunque hay otras funciones que te hacen cálculos para hacer una imitación, eso sí, tengo entendido que estas funciones son muy lentas.
en todo caso no tengo intenciones de usar 16 bits de profundidad, al final logre solucionarlo, modificando el canal alpha en un editor de imagenes llamado gimp, gracias por la ayuda!!

SplinterGU

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

Lord Sprit

#10
Soviet creo que has solucionado el problema pero te voy a decir la causa. Son los perfiles de color o espacios de color, para que 0,0,0 sea transparente y te lo detecte bennu como tal el perfil de color con el que trabajes tiene que ser AdobeRGB (1998). Lo que pasa es que suelen traer todos los programas por defecto el perfil sRGB IEC 61966-2.1 y este por lo que he comprobado hace que el 0,0,0 bennu o el fpg edit lo considere negro.

Y si, los perfiles se incrustan en la imagen y no dependen del tipo de extension de esta por si alguien se lo pregunta

laghengar

!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

laghengar

Quote from: Lord Sprit on December 01, 2013, 11:37:50 PM
Soviet creo que has solucionado el problema pero te voy a decir la causa. Son los perfiles de color o espacios de color, para que 0,0,0 sea transparente y te lo detecte bennu como tal el perfil de color con el que trabajes tiene que ser AdobeRGB (1998). Lo que pasa es que suelen traer todos los programas por defecto el perfil sRGB IEC 61966-2.1 y este por lo que he comprobado hace que el 0,0,0 bennu o el fpg edit lo considere negro.

Y si, los perfiles se incrustan en la imagen y no dependen del tipo de extension de esta por si alguien se lo pregunta
Tampoco lo he entendido o_O, pero esto me huele mucho más complicado, mejor déjamelo para mis clases intermedias o_O
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Soviet

Quote from: Lord Sprit on December 01, 2013, 11:37:50 PM
Soviet creo que has solucionado el problema pero te voy a decir la causa. Son los perfiles de color o espacios de color, para que 0,0,0 sea transparente y te lo detecte bennu como tal el perfil de color con el que trabajes tiene que ser AdobeRGB (1998). Lo que pasa es que suelen traer todos los programas por defecto el perfil sRGB IEC 61966-2.1 y este por lo que he comprobado hace que el 0,0,0 bennu o el fpg edit lo considere negro.

Y si, los perfiles se incrustan en la imagen y no dependen del tipo de extension de esta por si alguien se lo pregunta
bueno, la verdad es que no habria considerado aquello, en cualquier caso no tengo problemas a la hora de editar el canal alpha de las imagenes para que estas no queden con el perfil de color por defecto, pero si tu no me lo dices no sabria ni por asomo que aquella era la causa...
Gracias a todos por la ayuda!!

Drumpi

Quote from: laghengar on December 02, 2013, 12:07:20 AM
Quote from: SplinterGU on December 01, 2013, 09:57:36 PM
no es rgb sino 0.

No lo he entendido o_O

Creo que quiere decir que da igual que sea un color RGB(0,0,0), BRG(0,0,0), YCMK(0,0,0,0) o patatalimónpera(0,0,0), Bennu (y Fénix) interpretan como transparente un pixel con el valor cero, independientemente de cómo se interprete la cadena de bytes o de que el pixel ocupe 1, 2, 3 ó 4 Bytes.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)