NAME
	  gluBuild2DMipmaps - builds a 2-D mipmap


     C SPECIFICATION
	  GLint	gluBuild2DMipmaps( GLenum target,
				   GLint internalFormat,
				   GLsizei width,
				   GLsizei height,
				   GLenum format,
				   GLenum type,
				   const void *data )


     PARAMETERS
	  target	  Specifies the	target texture.	Must be
			  GL_TEXTURE_2D.

	  internalFormat  Requests the internal	storage	format of the
			  texture image.  Must be 1, 2,	3, or 4	or one
			  of the following symbolic constants:
			  GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12,
			  GL_ALPHA16, GL_LUMINANCE, GL_LUMINANCE4,
			  GL_LUMINANCE8, GL_LUMINANCE12,
			  GL_LUMINANCE16, GL_LUMINANCE_ALPHA,
			  GL_LUMINANCE4_ALPHA4,	GL_LUMINANCE6_ALPHA2,
			  GL_LUMINANCE8_ALPHA8,	GL_LUMINANCE12_ALPHA4,
			  GL_LUMINANCE12_ALPHA12,
			  GL_LUMINANCE16_ALPHA16, GL_INTENSITY,
			  GL_INTENSITY4, GL_INTENSITY8,
			  GL_INTENSITY12, GL_INTENSITY16, GL_RGB,
			  GL_R3_G3_B2, GL_RGB4,	GL_RGB5, GL_RGB8,
			  GL_RGB10, GL_RGB12, GL_RGB16,	GL_RGBA,
			  GL_RGBA2, GL_RGBA4, GL_RGB5_A1, GL_RGBA8,
			  GL_RGB10_A2, GL_RGBA12 or GL_RGBA16.

	  width, height	  Specifies the	width and height,
			  respectively,	in pixels of the texture
			  image.

	  format	  Specifies the	format of the pixel data.
			  Must be one of:  GL_COLOR_INDEX, GL_RED,
			  GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB,
			  GL_RGBA, GL_LUMINANCE, and
			  GL_LUMINANCE_ALPHA.

	  type		  Specifies the	data type for data.  Must be
			  one of: GL_UNSIGNED_BYTE, GL_BYTE,
			  GL_BITMAP, GL_UNSIGNED_SHORT,	GL_SHORT,
			  GL_UNSIGNED_INT, GL_INT, or GL_FLOAT.

	  data		  Specifies a pointer to the image data	in
			  memory.

     DESCRIPTION
	  gluBuild2DMipmaps builds a series of prefiltered 2-D texture
	  maps of decreasing resolutions called	a mipmap. This is used
	  for the antialiasing of texture mapped primitives.

	  A return value of 0 indicates	success, otherwise a GLU error
	  code is returned (see	gluErrorString).

	  Initially, the width and height of data are checked to see
	  if they are a	power of two. If not, a	copy of	data (not
	  data), is scaled up or down to the nearest power of two.
	  This copy will be used for subsequent	mipmapping operations
	  described below. (If width or	height is exactly between
	  powers of 2, then the	copy of	data will scale	upwards.)  For
	  example, if width is 57 and height is	23 then	a copy of data
	  will scale up	to 64 and down to 16, respectively, before
	  mipmapping takes place.

	  Then,	proxy textures (see glTexImage2D) are used to
	  determine if the implementation can fit the requested
	  texture. If not, both	dimensions are continually halved
	  until	it fits. (If the OpenGL	version	is <= 1.0, both
	  maximum texture dimensions are clamped to the	value returned
	  by glGetIntegerv with	the argument GL_MAX_TEXTURE_SIZE.)

	  Next,	a series of mipmap levels is built by decimating a
	  copy of data in half along both dimensions until size	1x1 is
	  reached. At each level, each texel in	the halved mipmap
	  level	is an average of the corresponding four	texels in the
	  larger mipmap	level. (In the case of rectangular images, the
	  decimation will ultimately reach an N	x 1 or 1 x N
	  configuration. Here, two texels are averaged instead.)

	  glTexImage2D is called to load each of these mipmap levels.
	  Level	0 is a copy of data. The highest level is
	  log2(max(width,height)).  For	example, if width is 64	and
	  height is 16 and the implementation can store	a texture of
	  this size, the following mipmap levels are built: 64x16,
	  32x8,	16x4, 8x2, 4x1,	2x1 and	1x1. These correspond to
	  levels 0 through 6, respectively.

	  See the glTexImage1D reference page for a description	of the
	  acceptable values for	format.	See the	glDrawPixels reference
	  page for a description of the	acceptable values for type.

     NOTES
	  Note that there is no	direct way of querying the maximum
	  level. This can be derived indirectly	via
	  glGetTexLevelParameter. First, query for the width & height
	  actually used	at level 0. (The width & height	may not	be
	  equal	to width & height respectively since proxy textures
	  might	have scaled them to fit	the implementation.) Then the
	  maximum level	can be derived from the	formula
	  log2(max(width,height)).

     ERRORS
	  GLU_INVALID_VALUE is returned	if width or height are < 1.

	  GLU_INVALID_ENUM is returned if internalFormat, format or
	  type are not legal.

     SEE ALSO
	  glDrawPixels,	glTexImage1D, glTexImage2D, gluBuild1DMipmaps,
	  gluErrorString, gluScaleImage