Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ glfeedbackbuffer(3G) — IRIX 6.5.3f

Media Vault

Software Library

Restoration Projects

Artifacts Sought



glFeedbackBuffer(3G)           OpenGL Reference           glFeedbackBuffer(3G)



NAME
     glFeedbackBuffer - controls feedback mode


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


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.  GL2D, GL3D, GL3DCOLOR,
             GL3DCOLORTEXTURE, and GL4DCOLORTEXTURE are accepted.

     buffer  Returns the feedback data.

DESCRIPTION
     The glFeedbackBuffer function controls feedback.  Feedback, like
     selection, is a GL mode.  The mode is selected by calling glRenderMode
     with GLFEEDBACK.  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 describing
     the information that is fed back for each vertex.  glFeedbackBuffer must
     be issued before feedback mode is enabled (by calling glRenderMode with
     argument GLFEEDBACK).  Setting GLFEEDBACK 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 number
     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 -1.  To take the GL out of feedback
     mode, call glRenderMode with a parameter value other than GLFEEDBACK.

     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 polygons has taken place, so



                                                                        Page 1





glFeedbackBuffer(3G)           OpenGL Reference           glFeedbackBuffer(3G)



     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 renders polygons by performing this
     decomposition.

     The glPassThrough command can be used to insert a marker into the
     feedback 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 |
          pixelRectangle | passThru

          point <- GLPOINTTOKEN vertex

          lineSegment <- GLLINETOKEN vertex vertex | GLLINERESETTOKEN
          vertex vertex

          polygon <- GLPOLYGONTOKEN n polySpec

          polySpec <- polySpec vertex | vertex vertex vertex

          bitmap <- GLBITMAPTOKEN vertex

          pixelRectangle <- GLDRAWPIXELTOKEN vertex | GLCOPYPIXELTOKEN
          vertex

          passThru <- GLPASSTHROUGHTOKEN 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



                                                                        Page 2





glFeedbackBuffer(3G)           OpenGL Reference           glFeedbackBuffer(3G)



          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.  GLPOINTTOKEN,
     GLLINETOKEN, GLLINERESETTOKEN, GLPOLYGONTOKEN, GLBITMAPTOKEN,
     GLDRAWPIXELTOKEN, GLCOPYPIXELTOKEN and GLPASSTHROUGHTOKEN are
     symbolic floating-point constants.  GLLINERESETTOKEN 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 number
     of values per vertex.  k is 1 in color index mode and 4 in RGBA mode.

          type           coordinates   color   texture   total number of values
   ____________________________________________________________________________
          GL2D             x, y                                   2
          GL3D            x, y, z                                 3
       GL3DCOLOR         x, y, z       k                        3+k
   GL3DCOLORTEXTURE    x, y, z,       k        4               7+k
   GL4DCOLORTEXTURE   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
     coordinate generation is enabled.  They are always transformed by the
     texture matrix.

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

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

     GLINVALIDVALUE is generated if size is negative.

     GLINVALIDOPERATION is generated if glFeedbackBuffer is called while the
     render mode is GLFEEDBACK, or if glRenderMode is called with argument
     GLFEEDBACK before glFeedbackBuffer is called at least once.

     GLINVALIDOPERATION is generated if glFeedbackBuffer is executed between
     the execution of glBegin and the corresponding execution of glEnd.

ASSOCIATED GETS
     glGet with argument GLRENDERMODE






                                                                        Page 3





glFeedbackBuffer(3G)           OpenGL Reference           glFeedbackBuffer(3G)



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




















































                                                                        Page 4



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026