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

FreeBSD Manual Pages


home | help

       glFeedbackBuffer	- controls feedback mode

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

       delim $$

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

       type    Specifies a symbolic constant that  describes  the  information
	       that   will   be	 returned  for	each  vertex.	GL_2D,	GL_3D,

       buffer  Returns the feedback data.

       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,
       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

    |	    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.

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

       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

       glGet with argument GL_RENDER_MODE

       glBegin,	glLineStipple, glPassThrough, glPolygonMode, glRenderMode,



Want to link to this manual page? Use this URL:

home | help