Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Fade on/off en OpenGL

Iniciado por O2, 12 de Noviembre de 2002, 07:55:03 PM

« anterior - próximo »

O2

                                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!!                                

BeRSeRKeR

                                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                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

O2

                                OK, Hoy ya es tarde para probarlo, pero mañana ya lo mirare y te comento si funciona!

Gracias Berserker!                                

O2

                                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! ;)                                

O2

                                ...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?                                

jpastor

                                No me acuerdo muy bien pero juraría recordar que las componentes se sacan de param[0], param[1], param[2] y param[3].                                

seryu

                                es como dice pastor..  params                                

O2

                                Cierto, ya lo consegui!
Gracias a ambos.

P.D Alguien tiene idea de lo de la linea que sale al activar el blend?                                

O2

                                Bueno, ya todo quedo solucionado.

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

Thanks a lot!!                                

ethernet

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.

seryu

                                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                                

ethernet

no, es q en este caso concreto es un bug de los drivers de ati.

O2

                                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!!                                

seryu

                                Pa mi qe windows tiene algo qe ver  :X9:  :X9:  :X9:                                

ethernet

wow ;) sigo sin entender por q si tienes un cuadrado aparecen dos triangulos, a pesar de  q las graficas solo rendericen triangulos.






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.