Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
GLFEEDBACKBUFFER()					    GLFEEDBACKBUFFER()

NAME
       glFeedbackBuffer	- controls feedback mode

C SPECIFICATION
       void glFeedbackBuffer( GLsizei size,
			      GLenum type,
			      GLfloat *buffer )

       delim $$

PARAMETERS
       size    Specifies the maximum number of values that can be written into
	       buffer.

       type    Specifies  a  symbolic  constant	that describes the information
	       that  will  be  returned	 for  each  vertex.    GL_2D,	GL_3D,
	       GL_3D_COLOR,  GL_3D_COLOR_TEXTURE,  and GL_4D_COLOR_TEXTURE are
	       accepted.

       buffer  Returns the feedback data.

DESCRIPTION
       The glFeedbackBuffer function controls feedback.	 Feedback, like	selec-
       tion, is	a GL mode.  The	mode is	selected by calling glRenderMode  with
       GL_FEEDBACK.   When  the	GL is in feedback mode,	no pixels are produced
       by rasterization.  Instead, information	about  primitives  that	 would
       have been rasterized is fed back	to the application using the GL.

       glFeedbackBuffer	 has  three arguments: buffer is a pointer to an array
       of floating-point values	into which  feedback  information  is  placed.
       size  indicates the size	of the array.  type is a symbolic constant de-
       scribing	the information	that is	fed back for each vertex.  glFeedback-
       Buffer must be issued before  feedback  mode  is	 enabled  (by  calling
       glRenderMode  with  argument GL_FEEDBACK).  Setting GL_FEEDBACK without
       establishing the	feedback buffer, or calling glFeedbackBuffer while the
       GL is in	feedback mode, is an error.

       When glRenderMode is called while in feedback mode, it returns the num-
       ber of entries placed in	the feedback array, and	 resets	 the  feedback
       array  pointer  to  the base of the feedback buffer. The	returned value
       never exceeds size. If the feedback data	required more  room  than  was
       available  in  buffer,  glRenderMode returns a negative value.  To take
       the GL out of feedback mode, call glRenderMode with a  parameter	 value
       other than GL_FEEDBACK.

       While in	feedback mode, each primitive, bitmap, or pixel	rectangle that
       would  be  rasterized  generates	a block	of values that are copied into
       the feedback array.  If doing so	would cause the	number of  entries  to
       exceed  the  maximum,  the block	is partially written so	as to fill the
       array (if there is any room left	at all), and an	overflow flag is  set.
       Each  block  begins with	a code indicating the primitive	type, followed
       by values that describe the primitive's vertices	and  associated	 data.
       Entries	are  also  written for bitmaps and pixel rectangles.  Feedback
       occurs after polygon culling and	glPolygonMode interpretation of	 poly-
       gons  has  taken	place, so polygons that	are culled are not returned in
       the feedback buffer.  It	can also occur after polygons with  more  than
       three edges are broken up into triangles, if the	GL implementation ren-
       ders polygons by	performing this	decomposition.

       The glPassThrough command can be	used to	insert a marker	into the feed-
       back buffer.  See glPassThrough.

       Following  is  the  grammar  for	 the blocks of values written into the
       feedback	buffer.	 Each primitive	is indicated with a unique identifying
       value followed by some number of	vertices.  Polygon entries include  an
       integer	value  indicating  how	many vertices follow.  A vertex	is fed
       back as some number of floating-point values, as	 determined  by	 type.
       Colors  are fed back as four values in RGBA mode	and one	value in color
       index mode.

	      feedbackList <- feedbackItem feedbackList	| feedbackItem

	      feedbackItem <- point | lineSegment | polygon | bitmap | pixel-
	      Rectangle	| passThru

	      point <- GL_POINT_TOKEN vertex

	      lineSegment <- GL_LINE_TOKEN vertex vertex | GL_LINE_RESET_TOKEN
	      vertex vertex

	      polygon <- GL_POLYGON_TOKEN n polySpec

	      polySpec <- polySpec vertex | vertex vertex vertex

	      bitmap <-	GL_BITMAP_TOKEN	vertex

	      pixelRectangle <-	GL_DRAW_PIXEL_TOKEN vertex | GL_COPY_PIXEL_TO-
	      KEN vertex

	      passThru <- GL_PASS_THROUGH_TOKEN	value

	      vertex <-	2d | 3d	| 3dColor | 3dColorTexture | 4dColorTexture

	      2d <- value value

	      3d <- value value	value

	      3dColor  <- value	value value color

	      3dColorTexture <-	value value value color	tex

	      4dColorTexture <-	value value value value	color tex

	      color <- rgba | index

	      rgba <- value value value	value

	      index <- value

	      tex <- value value value value

       value is	a floating-point number, and n is a floating-point integer
       giving the number of vertices in	the polygon.  GL_POINT_TOKEN,
       GL_LINE_TOKEN, GL_LINE_RESET_TOKEN, GL_POLYGON_TOKEN, GL_BITMAP_TOKEN,
       GL_DRAW_PIXEL_TOKEN, GL_COPY_PIXEL_TOKEN	and GL_PASS_THROUGH_TOKEN are
       symbolic	floating-point constants.  GL_LINE_RESET_TOKEN is returned
       whenever	the line stipple pattern is reset.  The	data returned as a
       vertex depends on the feedback type.

       The following table gives the correspondence between type and the num-
       ber of values per vertex.  k is 1 in color index	mode and 4 in RGBA
       mode.

  +---------------------+-------------+-------+---------+------------------------+
  |	   type		| coordinates |	color |	texture	| total	number of values |
  +---------------------+-------------+-------+---------+------------------------+
  |	   GL_2D	|    x,	y     |	      |		|	    2		 |
  |	   GL_3D	|   x, y, z   |	      |		|	    3		 |
  |	GL_3D_COLOR	|   x, y, z   |	 $k$  |		|	 $3 + k$	 |
  | GL_3D_COLOR_TEXTURE	|  x, y, z,   |	 $k$  |	   4	|	 $7 + k$	 |
  | GL_4D_COLOR_TEXTURE	| x, y,	z, w  |	 $k$  |	   4	|	 $8 + k$	 |
  +---------------------+-------------+-------+---------+------------------------+

       Feedback	vertex coordinates are in window coordinates, except w,	which
       is in clip coordinates.	Feedback colors	are lighted, if	lighting is
       enabled.	 Feedback texture coordinates are generated, if	texture	coor-
       dinate generation is enabled.  They are always transformed by the tex-
       ture matrix.

NOTES
       glFeedbackBuffer, when used in a	display	list, is not compiled into the
       display list but	is executed immediately.

ERRORS
       GL_INVALID_ENUM is generated if type is not an accepted value.

       GL_INVALID_VALUE	is generated if	size is	negative.

       GL_INVALID_OPERATION is generated if glFeedbackBuffer is	called while
       the render mode is GL_FEEDBACK, or if glRenderMode is called with argu-
       ment GL_FEEDBACK	before glFeedbackBuffer	is called at least once.

       GL_INVALID_OPERATION is generated if glFeedbackBuffer is	executed be-
       tween the execution of glBegin and the corresponding execution of
       glEnd.

ASSOCIATED GETS
       glGet with argument GL_RENDER_MODE

SEE ALSO
       glBegin,	glLineStipple, glPassThrough, glPolygonMode, glRenderMode,
       glSelectBuffer

							    GLFEEDBACKBUFFER()

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=glFeedbackBuffer&sektion=3&manpath=FreeBSD+Ports+15.0.quarterly>

home | help