Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > eee00533ac83fd7ebbf9846dc6d3b77b > files > 157

Io-language-graphics-and-sound-20080330-6.fc15.i686.rpm

<HTML>
<BODY>
<PRE>
     <STRONG>NAME</STRONG>
	  <STRONG>glSelectBuffer</STRONG> - establish a buffer for selection mode
	  values


     <STRONG>C</STRONG> <STRONG>SPECIFICATION</STRONG>
	  void <STRONG>glSelectBuffer</STRONG>( GLsizei <EM>size</EM>,
			       GLuint *<EM>buffer</EM> )


     <STRONG>PARAMETERS</STRONG>
	  <EM>size</EM>	  Specifies the	size of	<EM>buffer</EM>.

	  <EM>buffer</EM>  Returns the selection	data.

     <STRONG>DESCRIPTION</STRONG>
	  <STRONG>glSelectBuffer</STRONG> has two arguments:  <EM>buffer</EM> is a pointer to an
	  array	of unsigned integers, and <EM>size</EM> indicates the size of
	  the array.  <EM>buffer</EM> returns values from the name stack	(see
	  <STRONG>glInitNames</STRONG>, <STRONG>glLoadName</STRONG>, <STRONG>glPushName</STRONG>) when the	rendering mode
	  is <STRONG>GL_SELECT</STRONG> (see <STRONG>glRenderMode</STRONG>).  <STRONG>glSelectBuffer</STRONG> must	be
	  issued before	selection mode is enabled, and it must not be
	  issued while the rendering mode is <STRONG>GL_SELECT</STRONG>.

	  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 <STRONG>glRenderMode</STRONG> is called, a hit record is
	  copied to <EM>buffer</EM> if any hits have occurred since the last
	  such event (name stack change	or <STRONG>glRenderMode</STRONG>	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 <EM>buffer</EM>	is reset to 0 whenever
	  selection mode is entered.  Each time	a hit record is	copied
	  into <EM>buffer</EM>, 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 <EM>buffer</EM>, 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 <STRONG>glRenderMode</STRONG> with an argument
	  other	than <STRONG>GL_SELECT</STRONG>.	 Whenever <STRONG>glRenderMode</STRONG> is called while
	  the render mode is <STRONG>GL_SELECT</STRONG>,	it returns the number of hit
	  records copied to <EM>buffer</EM>, resets the overflow	flag and the
	  selection buffer pointer, and	initializes the	name stack to
	  be empty.  If	the overflow bit was set when <STRONG>glRenderMode</STRONG> was
	  called, a negative hit record	count is returned.

     <STRONG>NOTES</STRONG>
	  The contents of <EM>buffer</EM> is undefined until <STRONG>glRenderMode</STRONG> is
	  called with an argument other	than <STRONG>GL_SELECT</STRONG>.

	  <STRONG>glBegin</STRONG>/<STRONG>glEnd</STRONG>	primitives and calls to	<STRONG>glRasterPos</STRONG> can	result
	  in hits.

     <STRONG>ERRORS</STRONG>
	  <STRONG>GL_INVALID_VALUE</STRONG> is generated	if <EM>size</EM>	is negative.

	  <STRONG>GL_INVALID_OPERATION</STRONG> is generated if <STRONG>glSelectBuffer</STRONG> is
	  called while the render mode is <STRONG>GL_SELECT</STRONG>, or	if
	  <STRONG>glRenderMode</STRONG> is called with argument <STRONG>GL_SELECT</STRONG> before
	  <STRONG>glSelectBuffer</STRONG> is called at least once.

	  <STRONG>GL_INVALID_OPERATION</STRONG> is generated if <STRONG>glSelectBuffer</STRONG> is
	  executed between the execution of <STRONG>glBegin</STRONG> and	the
	  corresponding	execution of <STRONG>glEnd</STRONG>.

     <STRONG>ASSOCIATED</STRONG>	<STRONG>GETS</STRONG>
	  <STRONG>glGet</STRONG>	with argument <STRONG>GL_NAME_STACK_DEPTH</STRONG>

     <STRONG>SEE</STRONG> <STRONG>ALSO</STRONG>
	  <STRONG>glFeedbackBuffer</STRONG>, <STRONG>glInitNames</STRONG>, <STRONG>glLoadName</STRONG>, <STRONG>glPushName</STRONG>,
	  <STRONG>glRenderMode</STRONG>














</PRE>
</BODY>
</HTML>