Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: O2 en 12 de Noviembre de 2002, 07:55:03 PM

Título: Fade on/off en OpenGL
Publicado por: O2 en 12 de Noviembre de 2002, 07:55:03 PM
                                Muy buenas!!

Estoy probando metodos para hacer fades en GL... Al parecer el más habitual es colocar un QUAD en modo Ortho que ocupe toda la pantalla y darle el color, y obviamente la transparencia que quieras.

En fin los resultados que obtengo no son los esperados jejeje

Me pregunto si alguien que lo haya implementado podria comentarme algo sobre ello.

¿qué tipo de glBlendFunc es el adecuado para los fades?

En las pruebas que hice, por algun motivo no conseguia variar el factor de transparencia del QUAD (Antes de dibujar, hacia un glColor4f() con el alpha apropiado) saliendome siempre "igual" de transparente este.

¿Realmente esta es la forma adecuada de hacerlo, o existen otras mas eficaces o rapidas?

Muchas gracias de antemano!!                                
Título: Fade on/off en OpenGL
Publicado por: BeRSeRKeR en 12 de Noviembre de 2002, 09:56:39 PM
                                Las funciones de mezcla son para la fuente GL_SRC_ALPHA y para la de destino GL_ONE_MINUS_SRC_ALPHA

Por supuesto no olvides activar el blending...

Saludos                                
Título: Fade on/off en OpenGL
Publicado por: O2 en 13 de Noviembre de 2002, 12:23:05 AM
                                OK, Hoy ya es tarde para probarlo, pero mañana ya lo mirare y te comento si funciona!

Gracias Berserker!                                
Título: Fade on/off en OpenGL
Publicado por: O2 en 13 de Noviembre de 2002, 02:47:30 PM
                                Efectivamente con esas funciones de Blend consigo el efecto deseado, gracias de nuevo.

Ahora lo que ocurre es que al activar el Blend, me queda una antiestetica linea que cruza la pantalla, fruto de los 2 triangulos que forman el GL_QUAD...

He probado con glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); pero no parece afectar a los poligonos dibujados despues del glEnable(GL_BLEND);

Alguna sugerencia para quitar esa linea?

Thanks! ;)                                
Título: Fade on/off en OpenGL
Publicado por: O2 en 13 de Noviembre de 2002, 08:16:10 PM
                                ...por cierto, una cosilla más:

Me interesaria guardar en unas variables los colores actuales con los que se limpian los buffers (glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); )

Para ello, segun la MSDN puedo usar glGetfloatv(GL_COLOR_CLEAR_VALUE, GLfloat* params);

La susodicha MSDN dice que la funcion retorna 4 floats, pero no tengo manera de sacarlos, el puntero a float solo me contiene el primer color (rojo)

He probado con arrays, punteros, incluso con llamadas sucesivas a la funcion, para ver si los devolvia 1 por 1, pero nada, siempre me devuelve el rojo....

Alguien sabe como sacar los 4 colores que se esten usando actualmente para limpiar el fondo?                                
Título: Fade on/off en OpenGL
Publicado por: jpastor en 13 de Noviembre de 2002, 08:24:51 PM
                                No me acuerdo muy bien pero juraría recordar que las componentes se sacan de param[0], param[1], param[2] y param[3].                                
Título: Fade on/off en OpenGL
Publicado por: seryu en 14 de Noviembre de 2002, 05:46:17 PM
                                es como dice pastor..  params                                
Título: Fade on/off en OpenGL
Publicado por: O2 en 14 de Noviembre de 2002, 06:06:48 PM
                                Cierto, ya lo consegui!
Gracias a ambos.

P.D Alguien tiene idea de lo de la linea que sale al activar el blend?                                
Título: Fade on/off en OpenGL
Publicado por: O2 en 15 de Noviembre de 2002, 01:00:31 AM
                                Bueno, ya todo quedo solucionado.

La linea que me aparecia era por tener activado el suavizado de poligonos GL_POLYGON_SMOOTH.

Thanks a lot!!                                
Título: Fade on/off en OpenGL
Publicado por: ethernet en 15 de Noviembre de 2002, 01:07:18 AM
Pero tio no quedes esto asi xD di q es por un bug de los drivers de ati q si no la gente se piensa q opengl pone rayas donde no las hay xDDD.
Título: Fade on/off en OpenGL
Publicado por: seryu en 15 de Noviembre de 2002, 04:15:43 PM
                                OGL no hace nada, solo le dice al so y al tarjeto qe hacer.. es ya culpa del programador sino sabe explicarselo bien, o de las dos ultimas si fallan.

En cambio, directx si es culpable de si misma xD                                
Título: Fade on/off en OpenGL
Publicado por: ethernet en 15 de Noviembre de 2002, 06:17:36 PM
no, es q en este caso concreto es un bug de los drivers de ati.
Título: Fade on/off en OpenGL
Publicado por: O2 en 15 de Noviembre de 2002, 06:33:49 PM
                                Ethernet, no es posible que sea un Bug de los drivers de ATI. La linea diagonal aparece con cualquier tarjeta si activas el antialiasing de poligonos.

Acabo de probarlo con nVidia's, incluso con tarjetas SiS o Chips And Techs, que no tienen soporte hardware de GL.

Supongo que es el efecto normal, al aplicar el antialias de poligonos, suaviza los bordes de los triangulos, y por eso, si tienes la transparencia activada,  se ven.

Por otro lado, la Radeon 8500 es una tarjeta con mucho tiempo ya, y los ultimos Drivers son estables.

Saludos!!                                
Título: Fade on/off en OpenGL
Publicado por: seryu en 16 de Noviembre de 2002, 01:55:32 AM
                                Pa mi qe windows tiene algo qe ver  :X9:  :X9:  :X9:                                
Título: Fade on/off en OpenGL
Publicado por: ethernet en 16 de Noviembre de 2002, 12:48:56 PM
wow ;) sigo sin entender por q si tienes un cuadrado aparecen dos triangulos, a pesar de  q las graficas solo rendericen triangulos.
Título: Fade on/off en OpenGL
Publicado por: O2 en 16 de Noviembre de 2002, 08:33:53 PM
                                Pues Salen 2 triangulos por eso que tu mismo dices, porque el Quad queda internamente representado por 2 triangulos.

De todas formas puedes hacer la prueba renderizando una escena cualquiera con el GL_POLYGON_SMOOTH y el GL_BLEND activados, y veras como se ven todas las caras de los poligonos.

Respecto a lo de Windows, pues al probar en diferentes tarjetas, tambien probe en diferentes SOs y salia en todos...

Saludos!