|
InfoJosep
www.infojosep.es
|
|
Menu Introducción primer programa Primitivas y atributos Transformaciones Proyecciones Iluminación Texturización Efectos Todos los Ejemplos
EFECTOS
Para poderle dar mas realismo a nuestras escenas openGL dispone de una serie de funciones que nos permiten añadir efectos de sombreado, efectos de transparencias, efectos de niebla, antialiasing ( suavizado ). Que son los que veremos a continuación.
TRANSPARENCIA
Para poder hacer que uno de nuestros objetos sea transparente primero utilizaremos la función glEnable para activarla pasándole como parámetro la constante GL_BLEND y luego llamamos a la funcion glBlendFunc indicándole que tipo de transparencia o como queremos que sea esta transparencia.
glEnable GL_BLEND
glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
En las siguientes tablas podemos ver los valores que puede llevar esta función.
NIEBLA
Bueno como su nombre indica este efecto sera para añadir niebla a nuestra escena, tenemos 3 tipos de niebla, GL_LINEAR, GL_EXP, GL_EXP2.
GL_LINEAR, la usaremos para cuando queremos dibujar inicios de niebla.
GL_EXP, cuando queramos dibujar una niebla espesa o incluso nubes.
GL_EXP2, un buen uso seria para dibujar humo.
Para indicarle a las OpenGl que tipo de niebla vamos a utilizar usaremos la función glFlogi, esta función tiene 2 parámetros en el primero le indicaremos que estamos eligiendo el tipo de niebla con la constante GL_FOG_MODE y en el segundo parámetro el tipo de niebla.
glFogi GL_FOG_MODE, GL_LINEAR
Ahora ya hemos elegido el tipo de niebla y nos queda definir el color que tiene, para ello usamos la function glFogfi a la que le pasaremos la constante GL_FOG_COLOR la que le indica a openGl que lo que queremos hacer es escoger el color de la niebla y en su Segundo parámetro le pasamos un vector con RGBA.
glFogfi GL_FOG_COLOR, VectorConRGBA.
Si escogemos el tipo de niebla GL_EXP o GL_EXP2 tenemos que indicarle a intensidad de la niebla para hacerlo usaremos la funcion glFogf a la que le pasaremos la constante GL_FOG_DENSITY para indicarle que cambiamos la densidad y como segundo parámetro la densidad que suele tener un valor entre 0 y 0.1
ANTIALIASING
En antialiasing suavizara los objetos de nuestra escena cuando hablo de suavizar me refiero que perfecciona los bordes de los objetos y las texturas, etc.
Para utilizar el antialiasing activamos GL_BLEND al igual que con la niebla pero tenemos que activar alguna constante más como son GL_LINE_SMOOTH y/o GL_POINT_SMOOTH y/o GL_POLYGON_SMOOTH.
glEnable GL_BLEND
glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
glEnable GL_POLYGON_SMOOTH
glEnable GL_LINE_SMOOTH
Tenemos que tener en cuenta que el antialiasing es costoso y según para que aplicaciones no nos será útil.