Compartir a través de


Función glLightiv

La función glLightiv devuelve valores de parámetros de origen de luz.

Sintaxis

void WINAPI glLightiv(
         GLenum light,
         GLenum pname,
   const GLint  *params
);

Parámetros

light

Identificador de una luz. El número de luces posibles depende de la implementación, pero se admiten al menos ocho luces. Se identifican por nombres simbólicos de la forma GL_LIGHTi donde i es un valor: 0 a GL_MAX_LIGHTS - 1.

pname

Parámetro de fuente de luz para la luz. Se aceptan los siguientes nombres simbólicos.

Valor Significado
GL_AMBIENT
El parámetro params contiene cuatro valores enteros que especifican la intensidad RGBA ambiente de la luz. Los valores enteros se asignan linealmente de modo que el valor representable más positivo se asigna a 1,0 y el valor representable más negativo se asigna a -1,0. Los valores de punto flotante se asignan directamente. No se fijan valores enteros ni de punto flotante. La intensidad de luz ambiente predeterminada es (0,0, 0,0, 0,0, 1,0).
GL_DIFFUSE
El parámetro params contiene cuatro valores enteros que especifican la intensidad RGBA difusa de la luz. Los valores enteros se asignan linealmente de modo que el valor representable más positivo se asigna a 1,0 y el valor representable más negativo se asigna a -1,0. Los valores de punto flotante se asignan directamente. No se fijan valores enteros ni de punto flotante. La intensidad difusa predeterminada es (0,0, 0,0, 0,0, 1,0) para todas las luces que no sean cero. La intensidad difusa predeterminada de la luz cero es (1,0, 1,0, 1,0, 1,0).
GL_SPECULAR
El parámetro params contiene cuatro valores enteros que especifican la intensidad RGBA especular de la luz. Los valores enteros se asignan linealmente de modo que el valor representable más positivo se asigna a 1,0 y el valor representable más negativo se asigna a 1,0. Los valores de punto flotante se asignan directamente. No se fijan valores enteros ni de punto flotante. La intensidad especular predeterminada es (0,0, 0,0, 0,0, 1,0) para todas las luces que no sean cero. La intensidad especular predeterminada del cero claro es (1,0, 1,0, 1,0, 1,0).
GL_POSITION
El parámetro params contiene cuatro valores enteros que especifican la posición de la luz en coordenadas de objeto homogéneas. Los valores enteros y de punto flotante se asignan directamente. No se fijan valores enteros ni de punto flotante.
La posición se transforma mediante la matriz modelview cuando se llama a glLightiv (como si fuera un punto) y se almacena en coordenadas oculares. Si el componente w de la posición es 0,0, la luz se trata como una fuente direccional. Los cálculos de iluminación difusa y especular toman la dirección de la luz, pero no su posición real, en cuenta y la atenuación está deshabilitada. De lo contrario, los cálculos de iluminación difusa y especular se basan en la ubicación real de la luz en coordenadas oculares y se habilita la atenuación. La posición predeterminada es (0,0,1,0); por lo tanto, la fuente de luz predeterminada es direccional, paralela a y en la dirección del eje -z .
GL_SPOT_DIRECTION
El parámetro params contiene tres valores enteros que especifican la dirección de la luz en coordenadas de objeto homogéneas. Los valores enteros y de punto flotante se asignan directamente. No se fijan valores enteros ni de punto flotante.
La dirección de spot se transforma por el inverso de la matriz modelview cuando se llama a glLightiv (como si fuera normal) y se almacena en coordenadas oculares. Es significativo solo cuando GL_SPOT_CUTOFF no es 180, que es de forma predeterminada. La dirección predeterminada es (0,0,1).
GL_SPOT_EXPONENT
El parámetro params es un único valor entero que especifica la distribución de intensidad de la luz. Los valores enteros y de punto flotante se asignan directamente. Solo se aceptan valores del intervalo [0, 128].
La intensidad de la luz efectiva se atenua por el coseno del ángulo entre la dirección de la luz y la dirección de la luz al vértice que se ilumina, elevado a la potencia del exponente de la mancha. Por lo tanto, los exponentes de puntos más altos dan lugar a una fuente de luz más centrada, independientemente del ángulo de corte de punto. El exponente de spot predeterminado es 0, lo que da lugar a una distribución uniforme de la luz.
GL_SPOT_CUTOFF
El parámetro params es un único valor entero que especifica el ángulo máximo de propagación de una fuente de luz. Los valores enteros y de punto flotante se asignan directamente. Solo se aceptan los valores del intervalo [0, 90] y el valor especial 180.
Si el ángulo entre la dirección de la luz y la dirección de la luz al vértice que se está iluminando es mayor que el ángulo de corte de punto, la luz se enmascara completamente. De lo contrario, su intensidad se controla mediante el exponente del punto y los factores de atenuación. El corte de spot predeterminado es 180, lo que da lugar a una distribución uniforme de luz.
GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION, GL_QUADRATIC_ATTENUATION
El parámetro params es un único valor entero que especifica uno de los tres factores de atenuación de luz. Los valores enteros y de punto flotante se asignan directamente. Solo se aceptan valores no negativos.
Si la luz es posicional, en lugar de direccional, su intensidad se atenua por la recíproca de la suma de: el factor constante, el factor lineal multiplicado por la distancia entre la luz y el vértice que se ilumina, y el factor cuadrático multiplicado por el cuadrado de la misma distancia. Los factores de atenuación predeterminados son (1,0,0), lo que da lugar a ninguna atenuación.

params

Especifica el valor en el que se establecerá el parámetro pname de la luz de fuente de luz.

Valor devuelto

Esta función no devuelve ningún valor.

Códigos de error

La función glGetError puede recuperar los siguientes códigos de error.

Nombre Significado
GL_INVALID_ENUM
light o pname no era un valor aceptado.
GL_INVALID_VALUE
Se especificó un valor exponente de spot fuera del intervalo [0, 128] o se especificó un corte puntual fuera del intervalo [0, 90] (excepto para el valor especial 180) o se especificó un factor de atenuación negativo.
GL_INVALID_OPERATION
Se llamó a la función entre una llamada a glBegin y la llamada correspondiente a glEnd.

Comentarios

La función glLightiv establece el valor o los valores de los parámetros de fuente de luz individuales. El parámetro light nombra la luz y es un nombre simbólico del formulario GL_LIGHTi, donde 0 = i< GL_MAX_LIGHTS.

El parámetro pname especifica uno de los parámetros de origen de luz, de nuevo por nombre simbólico. El parámetro params es un valor único o un puntero a una matriz que contiene los nuevos valores.

El cálculo de iluminación está habilitado y deshabilitado mediante glEnable y glDisable con GL_LIGHTING de argumentos. Cuando la iluminación está habilitada, las fuentes de luz habilitadas contribuyen al cálculo de la iluminación. La fuente de luz i está habilitada y deshabilitada mediante glEnable y glDisable con el argumento GL_LIGHTi.

Siempre es el caso de que GL_LIGHTi = GL_LIGHT0 + i.

Las siguientes funciones recuperan información relacionada con la función glLightiv :

glGetLight

glIsEnabled con GL_LIGHTING de argumento

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Gl.h
Biblioteca
Opengl32.lib
Archivo DLL
Opengl32.dll

Consulte también

glBegin

glColorMaterial

glEnd

glLightModel

glMaterial