glLight.3gl




Name

  glLightf, glLighti, glLightfv, glLightiv - set light source parameters


C Specification

  void glLightf( GLenum	light,
		 GLenum	pname,
		 GLfloat param )
  void glLighti( GLenum	light,
		 GLenum	pname,
		 GLint param )


Parameters


  light	  Specifies a light.  The number of lights is depends on the
	  implementation, but at least eight lights are	supported.  They are
	  identified by	symbolic names of the form GL_LIGHTi where 0 <= i <
	  GL_MAX_LIGHTS.

  pname	  Specifies a single-valued light source parameter for light.
	  GL_SPOT_EXPONENT, GL_SPOT_CUTOFF, GL_CONSTANT_ATTENUATION,
	  GL_LINEAR_ATTENUATION	, and GL_QUADRATIC_ATTENUATION are accepted.

  param	  Specifies the	value that parameter pname of light source light will
	  be set to.

C Specification

  void glLightfv( GLenum light,
		  GLenum pname,
		  const	GLfloat	*params	)
  void glLightiv( GLenum light,
		  GLenum pname,
		  const	GLint *params )


Parameters


  light
       Specifies a light.  The number of lights	depends	on the
       implementation, but at least eight lights are supported.	 They are
       identified by symbolic names of the form	GL_LIGHTi where	0 <= i <
       GL_MAX_LIGHTS.

  pname
       Specifies a light source	parameter for light.  GL_AMBIENT, GL_DIFFUSE,
       GL_SPECULAR, GL_POSITION, GL_SPOT_DIRECTION, GL_SPOT_EXPONENT,
       GL_SPOT_CUTOFF, GL_CONSTANT_ATTENUATION,	GL_LINEAR_ATTENUATION, and
       GL_QUADRATIC_ATTENUATION	are accepted.

  params
       Specifies a pointer to the value	or values that parameter pname of
       light source light will be set to.


Description

  glLight sets the values of individual	light source parameters.  light	names
  the light and	is a symbolic name of the form GL_LIGHTi, where	0 <= i <
  GL_MAX_LIGHTS.  pname	specifies one of ten light source parameters, again
  by symbolic name.  params is either a	single value or	a pointer to an	array
  that contains	the new	values.

  Lighting calculation is enabled and disabled using glEnable and glDisable
  with argument	GL_LIGHTING.  When lighting is enabled,	light sources that
  are enabled contribute to the	lighting calculation.  Light source i is
  enabled and disabled using glEnable and glDisable with argument GL_LIGHTi.

  The ten light	parameters are as follows:

  GL_AMBIENT	      params contains four integer or floating-point values
		      that specify the ambient RGBA intensity of the light.
		      Integer values are mapped	linearly such that the most
		      positive representable value maps	to 1.0,	and the	most
		      negative representable value maps	to -1.0.  Floating-
		      point values are mapped directly.	 Neither integer nor
		      floating-point values are	clamped.  The default ambient
		      light intensity is (0.0, 0.0, 0.0, 1.0).

  GL_DIFFUSE	      params contains four integer or floating-point values
		      that specify the diffuse RGBA intensity of the light.
		      Integer values are mapped	linearly such that the most
		      positive representable value maps	to 1.0,	and the	most
		      negative representable value maps	to -1.0.  Floating-
		      point values are mapped directly.	 Neither integer nor
		      floating-point values are	clamped.  The default diffuse
		      intensity	is (0.0, 0.0, 0.0, 1.0)	for all	lights other
		      than light zero.	The default diffuse intensity of
		      light zero is (1.0, 1.0, 1.0, 1.0).

  GL_SPECULAR	      params contains four integer or floating-point values
		      that specify the specular	RGBA intensity of the light.
		      Integer values are mapped	linearly such that the most
		      positive representable value maps	to 1.0,	and the	most
		      negative representable value maps	to -1.0.  Floating-
		      point values are mapped directly.	 Neither integer nor
		      floating-point values are	clamped.  The default
		      specular intensity is (0.0, 0.0, 0.0, 1.0) for all
		      lights other than	light zero.  The default specular
		      intensity	of light zero is (1.0, 1.0, 1.0, 1.0).

  GL_POSITION	      params contains four integer or floating-point values
		      that specify the position	of the light in	homogeneous
		      object coordinates.  Both	integer	and floating-point
		      values are mapped	directly.  Neither integer nor
		      floating-point values are	clamped.

		      The position is transformed by the modelview matrix
		      when glLight is called (just as if it were a point),
		      and it is	stored in eye coordinates.  If the w
		      component	of the position	is 0.0,	the light is treated
		      as a directional source.	Diffuse	and specular lighting
		      calculations take	the light's direction, but not its
		      actual position, into account, and attenuation is
		      disabled.	 Otherwise, diffuse and	specular lighting
		      calculations are based on	the actual location of the
		      light in eye coordinates,	and attenuation	is enabled.
		      The default position is (0,0,1,0); thus, the default
		      light source is directional, parallel to,	and in the
		      direction	of the -z axis.

  GL_SPOT_DIRECTION   params contains three integer or floating-point values
		      that specify the direction of the	light in homogeneous
		      object coordinates.  Both	integer	and floating-point
		      values are mapped	directly.  Neither integer nor
		      floating-point values are	clamped.

		      The spot direction is transformed	by the inverse of the
		      modelview	matrix when glLight is called (just as it it
		      were a normal), and it is	stored in eye coordinates.
		      It is significant	only when GL_SPOT_CUTOFF is not	180,
		      which it is by default.  The default direction is
		      (0,0,-1).

  GL_SPOT_EXPONENT    params is	a single integer or floating-point value that
		      specifies	the intensity distribution of the light.
		      Integer and floating-point values	are mapped directly.
		      Only values in the range [0,128] are accepted.

		      Effective	light intensity	is attenuated by the cosine
		      of the angle between the direction of the	light and the
		      direction	from the light to the vertex being lighted,
		      raised to	the power of the spot exponent.	 Thus, higher
		      spot exponents result in a more focused light source,
		      regardless of the	spot cutoff angle (see next
		      paragraph).  The default spot exponent is	0, resulting
		      in uniform light distribution.

  GL_SPOT_CUTOFF      params is	a single integer or floating-point value that
		      specifies	the maximum spread angle of a light source.
		      Integer and floating-point values	are mapped directly.
		      Only values in the range [0,90], and the special value
		      180, are accepted.  If the angle between the direction
		      of the light and the direction from the light to the
		      vertex being lighted is greater than the spot cutoff
		      angle, the light is completely masked.  Otherwise, its
		      intensity	is controlled by the spot exponent and the
		      attenuation factors.  The	default	spot cutoff is 180,
		      resulting	in uniform light distribution.

  GL_CONSTANT_ATTENUATION

  GL_LINEAR_ATTENUATION

  GL_QUADRATIC_ATTENUATION
		      params is	a single integer or floating-point value that
		      specifies	one of the three light attenuation factors.
		      Integer and floating-point values	are mapped directly.
		      Only nonnegative values are accepted.  If	the light is
		      positional, rather than directional, its intensity is
		      attenuated by the	reciprocal of the sum of: the
		      constant factor, the linear factor times the distance
		      between the light	and the	vertex being lighted, and the
		       quadratic factor	times the square of the	same
		      distance.	 The default attenuation factors are (1,0,0),
		      resulting	in no attenuation.


Notes

  It is	always the case	that GL_LIGHTi = GL_LIGHT0 + i.

Errors

  GL_INVALID_ENUM is generated if either light or pname	is not an accepted
  value.


  GL_INVALID_VALUE is generated	if a spot exponent value is specified outside
  the range [0,128], or	if spot	cutoff is specified outside the	range [0,90]
  (except for the special value	180), or if a negative attenuation factor is
  specified.


  GL_INVALID_OPERATION is generated if glLight is executed between the
  execution of	glBegin	and the	corresponding execution	of glEnd.

Associated Gets

  glGetLight
  glIsEnabled with argument GL_LIGHTING

See Also

  glColorMaterial, glLightModel, glMaterial


Introduction | Alphabetic | Specification

Last Edited: Mon, May 22, 1995

AFV