NAME
	  fglSelectBuffer - establish a	buffer for selection mode
	  values


     FORTRAN SPECIFICATION
	  SUBROUTINE fglSelectBuffer( INTEGER*4	size,
				      CHARACTER*8 buffer )


     PARAMETERS
	  size	  Specifies the	size of	buffer.

	  buffer  Returns the selection	data.

     DESCRIPTION
	  fglSelectBuffer has two arguments:  buffer is	a pointer to
	  an array of unsigned integers, and size indicates the	size
	  of the array.	 buffer	returns	values from the	name stack
	  (see fglInitNames, fglLoadName, fglPushName) when the
	  rendering mode is GL_SELECT (see fglRenderMode).
	  fglSelectBuffer must be issued before	selection mode is
	  enabled, and it must not be issued while the rendering mode
	  is GL_SELECT.

	  A programmer can use selection to determine which primitives
	  are drawn into some region of	a window.  The region is
	  defined by the current modelview and perspective matrices.

	  In selection mode, no	pixel fragments	are produced from
	  rasterization.  Instead, if a	primitive or a raster position
	  intersects the clipping volume defined by the	viewing
	  frustum and the user-defined clipping	planes,	this primitive
	  causes a selection hit.  (With polygons, no hit occurs if
	  the polygon is culled.)  When	a change is made to the	name
	  stack, or when fglRenderMode is called, a hit	record is
	  copied to buffer if any hits have occurred since the last
	  such event (name stack change	or fglRenderMode call).	 The
	  hit record consists of the number of names in	the name stack
	  at the time of the event, followed by	the minimum and
	  maximum depth	values of all vertices that hit	since the
	  previous event, followed by the name stack contents, bottom
	  name first.

	  Depth	values (which are in the range [0,1]) are multiplied
	  by 2^32 - 1, before being placed in the hit record.

	  An internal index into buffer	is reset to 0 whenever
	  selection mode is entered.  Each time	a hit record is	copied
	  into buffer, the index is incremented	to point to the	cell
	  just past the	end of the block of names - that is, to	the
	  next available cell.	If the hit record is larger than the
	  number of remaining locations	in buffer, as much data	as can
	  fit is copied, and the overflow flag is set.	If the name
	  stack	is empty when a	hit record is copied, that record
	  consists of 0	followed by the	minimum	and maximum depth
	  values.

	  To exit selection mode, call fglRenderMode with an argument
	  other	than GL_SELECT.	 Whenever fglRenderMode	is called
	  while	the render mode	is GL_SELECT, it returns the number of
	  hit records copied to	buffer,	resets the overflow flag and
	  the selection	buffer pointer,	and initializes	the name stack
	  to be	empty.	If the overflow	bit was	set when fglRenderMode
	  was called, a	negative hit record count is returned.

     NOTES
	  The contents of buffer is undefined until fglRenderMode is
	  called with an argument other	than GL_SELECT.

	  fglBegin/fglEnd primitives and calls to fglRasterPos can
	  result in hits.

     ERRORS
	  GL_INVALID_VALUE is generated	if size	is negative.

	  GL_INVALID_OPERATION is generated if fglSelectBuffer is
	  called while the render mode is GL_SELECT, or	if
	  fglRenderMode	is called with argument	GL_SELECT before
	  fglSelectBuffer is called at least once.

	  GL_INVALID_OPERATION is generated if fglSelectBuffer is
	  executed between the execution of fglBegin and the
	  corresponding	execution of fglEnd.

     ASSOCIATED	GETS
	  fglGet with argument GL_NAME_STACK_DEPTH

     SEE ALSO
	  fglFeedbackBuffer, fglInitNames, fglLoadName,	fglPushName,
	  fglRenderMode