glMaterial.3gl








Name


  glMaterialf, glMateriali, glMaterialfv, glMaterialiv - specify material

  parameters for the lighting model





C Specification


  void glMaterialf( GLenum face,

		    GLenum pname,

		    GLfloat param )

  void glMateriali( GLenum face,

		    GLenum pname,

		    GLint param	)





Parameters




  face	  Specifies which face or faces	are being updated.  Must be one	of

	  GL_FRONT, GL_BACK, or	GL_FRONT_AND_BACK.



  pname	  Specifies the	single-valued material parameter of the	face or	faces

	  that is being	updated.  Must be GL_SHININESS.



  param	  Specifies the	value that parameter GL_SHININESS will be set to.



C Specification


  void glMaterialfv( GLenum face,

		     GLenum pname,

		     const GLfloat *params )

  void glMaterialiv( GLenum face,

		     GLenum pname,

		     const GLint *params )





Parameters




  face Specifies which face or faces are being updated.	 Must be one of

       GL_FRONT, GL_BACK, or GL_FRONT_AND_BACK.



  pname

       Specifies the material parameter	of the face or faces that is being

       updated.	 Must be one of	GL_AMBIENT, GL_DIFFUSE,	GL_SPECULAR,

       GL_EMISSION, GL_SHININESS, GL_AMBIENT_AND_DIFFUSE,  or

       GL_COLOR_INDEXES.



  params

       Specifies a pointer to the value	or values that pname will be set to.





Description


  glMaterial assigns values to material	parameters.  There are two matched

  sets of material parameters.	One, the front-facing set, is used to shade

  points, lines, bitmaps, and all polygons (when two-sided lighting is

  disabled), or	just front-facing polygons (when two-sided lighting is

  enabled).  The other set, back-facing, is used to shade back-facing

  polygons only	when two-sided lighting	is enabled.  Refer to the

  glLightModel reference page for details concerning one- and two-sided

  lighting calculations.





  glMaterial takes three arguments.  The first,	face, specifies	whether	the

  GL_FRONT materials, the GL_BACK materials, or	both GL_FRONT_AND_BACK

  materials will be modified.  The second, pname, specifies which of several

  parameters in	one or both sets will be modified.  The	third, params,

  specifies what value or values will be assigned to the specified parameter.



  Material parameters are used in the lighting equation	that is	optionally

  applied to each vertex.  The equation	is discussed in	the glLightModel

  reference page.  The parameters that can be specified	using glMaterial, and

  their	interpretations	by the lighting	equation, are as follows:



  GL_AMBIENT	      params contains four integer or floating-point values

		      that specify the ambient RGBA reflectance	of the

		      material.	 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 reflectance for both front- and back-

		      facing materials is (0.2,	0.2, 0.2, 1.0).



  GL_DIFFUSE	      params contains four integer or floating-point values

		      that specify the diffuse RGBA reflectance	of the

		      material.	 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 reflectance for both front- and back-

		      facing materials is (0.8,	0.8, 0.8, 1.0).



  GL_SPECULAR	      params contains four integer or floating-point values

		      that specify the specular	RGBA reflectance of the

		      material.	 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 reflectance for both front- and back-

		      facing materials is (0.0,	0.0, 0.0, 1.0).



  GL_EMISSION	      params contains four integer or floating-point values

		      that specify the RGBA emitted light intensity of the

		      material.	 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 emission intensity for both front- and back-

		      facing materials is (0.0,	0.0, 0.0, 1.0).



  GL_SHININESS	      params is	a single integer or floating-point value that

		      specifies	the RGBA specular exponent of the material.

		      Integer and floating-point values	are mapped directly.

		      Only values in the range [0,128] are accepted.  The

		      default specular exponent	for both front-	and back-

		      facing materials is 0.



  GL_AMBIENT_AND_DIFFUSE

		      Equivalent to calling glMaterial twice with the same

		      parameter	values,	once with GL_AMBIENT and once with

		      GL_DIFFUSE.



  GL_COLOR_INDEXES    params contains three integer or floating-point values

		      specifying the color indices for ambient,	diffuse, and

		      specular lighting.  These	three values, and

		      GL_SHININESS, are	the only material values used by the

		      color index mode lighting	equation.  Refer to the

		      glLightModel reference page for a	discussion of color

		      index lighting.



Notes


  The material parameters can be updated at any	time.  In particular,

  glMaterial can be called between a call to glBegin and the corresponding

  call to glEnd.  If only a single material parameter is to be changed per

  vertex, however, glColorMaterial is preferred	over glMaterial	(see

  glColorMaterial).



Errors


  GL_INVALID_ENUM is generated if either face or pname is not an accepted

  value.



  GL_INVALID_VALUE is generated	if a specular exponent outside the range

  [0,128] is specified.



Associated Gets


  glGetMaterial



See Also


  glColorMaterial, glLight, glLightModel








Introduction | Alphabetic | Specification

Last Edited: Mon, May 22, 1995

AFV