Personal tools

Difference between revisions of "Funciones en OpenGL"

From hpcwiki

Jump to: navigation, search
(Funciones de OpenGL para la iluminación en C)
(Funciones de OpenGL para la iluminación en C)
 
Line 32: Line 32:
 
   glLightv (light_name, GL_SPOT_CUTOFF, angle);
 
   glLightv (light_name, GL_SPOT_CUTOFF, angle);
 
   glLightv (light_name, GL_SPOT_EXPONENT, factor);
 
   glLightv (light_name, GL_SPOT_EXPONENT, factor);
 +
 +
===Opciones del modelo de iluminación===
 +
 +
Usando la función:
 +
 +
  glLightModelf(param_name, param_value);
 +
 +
Es posible configurar parámetros globales del modelo de iluminación aplicado

Latest revision as of 11:37, 6 August 2013

[edit] Funciones de OpenGL para la iluminación en C

Es posible definir múltiples fuentes de iluminación a través de light_names que van desde GL_LIGHT0 hasta GL_LIGHT7, y es posible definir las propiedades de estas por medio de la función:

 glLightfv(light_name, light_property, property_value)

Lo primero es definir la posición y el tipo de luz. Existen fuentes puntuales que se ubican en algún punto (x,y,z) de la escena y fuentes direccionales que se encuentran lejos de la escena de tal forma que los rayos de la fuente de luz se consideran paralelos. La función de arriba usando la propiedad GL_POSITION permite definir tanto el tipo de luz como su posición o su dirección. Esto se define con el tercer parámetro de la función, el cual debe ser un arreglo de 4 valores de punto flotante (float). Si el cuarto elemento del arreglo es cero la luz será direccional y los tres primeros parámetros especifican la dirección de esta. Si el cuarto es uno, la luz es puntual y los tres primeros sirven para especificar la posición en la escena.

Para activar los algoritmos de iluminación es necesario hacer un llamado a la función:

 glEnable(GL_LIGHTING);

Y para que trabaje la luz que se ha definido es necesario activarla usando el nombre, de esta forma:

 glEnable(light_name);

Es posible configurar tres colores diferentes para cada luz. Uno especifica el color del componente ambiental, otro para la componente difusa y otro para la componente especular, mediante el uso de la función:

 glLightfv(light_name, GL_AMBIENT,  vector_color1);
 glLightfv(light_name, GL_DIFFUSE,  vector_color2);
 glLightfv(light_name, GL_SPECULAR, vector_color3);

La atenuación de la luz con respecto a la distancia entre la luz y un punto del objeto se puede configurar por medio de una función cuadrática. Los coeficientes cuadráticos en función de la distancia están dados por las siguientes propiedades:

 glLightv(light_name, GL_CONSTANT_ATTENUATION,  value1);
 glLightv(light_name, GL_LINEAR_ATTENUATION,    value2);
 glLightv(light_name, GL_CUADRATIC_ATTENUATION, value3);

La definición de spotlights se configura para fuentes puntuales por medio de tres propiedades: la primera define la dirección de la luz, la segunda define un ángulo de corte de en grados a partir del cual no se emiten rayos, y el tercero es un factor de atenuación llamado exponente que medida que el punto iluminado se aleja del eje de dirección de la luz, esta disminuye su intensidad:

 glLightvf(light_name, GL_SPOT_DIRECTION, vector_direction);
 glLightv (light_name, GL_SPOT_CUTOFF, angle);
 glLightv (light_name, GL_SPOT_EXPONENT, factor);

[edit] Opciones del modelo de iluminación

Usando la función:

 glLightModelf(param_name, param_value);

Es posible configurar parámetros globales del modelo de iluminación aplicado