Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Multitextura Y Blending

Iniciado por [Over], 01 de Marzo de 2005, 02:43:27 PM

« anterior - próximo »

[Over]

 Hola.

Estoy probando la multitextura con alpha-blending (en OpenGL) para conseguir hacer lo siguiente:

Tener un poligono con 2 texturas, ambas a 255 de alpha y fadear en alpha la que estaría por "encima". Consigo hacerlo, pero me fadean las dos, he estado probando diferentes combinaciones con el glTextEnv y demas.

Solo consigo hacer otro efectos diferentes al que quiero, los tipicos de lightmaps, sistema de particulas,etc... Pero no encuentro la combinación para mantener una textura opaca y la otra poder fadearla.

¿Alguién sabe cual es?.

Gracias.


vincent

 Buenas,

hace bastante que no toco nada de OpenGL, pero creo que esto te servirá:

pones los modos como  si fueras a hacer un lightmap y antes de pintar la segunda textura, pones un glColor3f() con un valor en la escala de grises.

Creo que esto te funcionará.

VinCenT
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

Loover

 ¿Te refieres al blending para que dos imágenes con alpha una encima de otra se vean respetando la transparencia?

Fuente = SRCALPHA
Destino = INVSRCALPHA
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Ithaqua

 Creo que lo que buscas es hacer una interpolación lineal entre 2 texture units (sin tener en cuenta para nada lo que hay en el framebuffer).
Dibujar con multitextura un poly con 2 texturas y poder hacer que el de por encima se vea menos o más

Para eso usa la extensión de env_combine para la texture unit de la textura que va por encima.

La activas con:
   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
   glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB,  GL_INTERPOLATE_ARB);
Y luego establecer los parámetros:
   GL_TEXTURE_ENV_COLOR
   GL_SOURCE0_RGB_ARB
   GL_SOURCE1_RGB_ARB
   GL_OPERAND0_RGB_ARB
   GL_OPERAND1_RGB_ARB
   GL_OPERAND2_RGB_ARB
thaqua^Stravaganza
http://ithaqua.stravaganza.org

[Over]

 Hola.

Gracias, Ithaqua. Lo probaré cuando llegue a casa. Supongo que para cambiar el alpha valdrá con usar glColor ¿?.

   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
   glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE_ARB);

   glTexEnvi( GL_TEXTURE_ENV_COLOR, GL_SOURCE0_RGB_ARB,  GL_PREVIOUS_ARB );
   glTexEnvi( GL_TEXTURE_ENV_COLOR, GL_OPERAND0_RGB_ARB, GL_SRC_ALPHA );

   glTexEnvi( GL_TEXTURE_ENV_COLOR, GL_SOURCE1_RGB_ARB, GL_TEXTURE );
   glTexEnvi( GL_TEXTURE_ENV_COLOR, GL_OPERAND1_RGB_ARB, GL_ONE_MINUS_SRC_ALPHA);

   glTexEnvi( GL_TEXTURE_ENV_COLOR, GL_SOURCE2_RGB_ARB, GL_PRIMARY_COLOR_ARB );
   glTexEnvi( GL_TEXTURE_ENV_COLOR, GL_OPERAND2_RGB_ARB, GL_SRC_COLOR );

Con esto, consigo fader una textura, pero la de "abajo" sigue sin verse... ¿te sabes que parametros hay que colocar?

Saludos.

vincent

 Yo creo que con un glColor4f(1.0, 1.0, 1.0, alfa) te tiene que valer. Esto es lo que queria decir en el otro post, no lo de la escala de grises... que me he liao!!  :P

VinCenT
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

[Over]

 Hola.

Si valer me vale, con glColor fadea bien el alpha y demas, pero si uso 2 texturas para un mismo poligono, no consigo dejar una "intactacta" y la otra fadear a gusto, o las fadeo las dos o nada...

vincent

 Y utilizar la función glTexEnv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, color) donde color és float color[4] = {1.0, 1.0, 1.0, alfa}; ?

No lo he probado nunca, pero quizas es esto...

VinCenT.


Desarrollo en .Net y metodologías http://devnettips.blogspot.com

zupervaca

 el glColor4 tienes que ponerlo en cada activacion de textura si no recuerdo mal






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.