*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> glSelectBuffer (3)              



NAME    [Toc]    [Back]

       glSelectBuffer  -  establish  a  buffer for selection mode

SYNOPSIS    [Toc]    [Back]

       void glSelectBuffer(
               GLsizei size,
               GLuint *buffer );

PARAMETERS    [Toc]    [Back]

       Specifies the size of buffer.  Returns the selection data.

DESCRIPTION    [Toc]    [Back]

       glSelectBuffer() 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 glInitNames(), glLoadName(), glPushName())  when  the
       rendering  mode  is GL_SELECT (see glRenderMode()).  glSelectBuffer()
 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 glRenderMode() is called, a hit record
       is copied to buffer if any hits have  occurred  since  the
       last  such  event  (name  stack  change  or glRenderMode()
       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 option
       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 glRenderMode() with an  argument
  other  than  GL_SELECT.  Whenever  glRenderMode() is
       called while the render mode is GL_SELECT, it returns  the
       number  of  hit records copied to buffer, resets the overflow
 option and the selection buffer pointer, and initializes
  the  name stack to be empty. If the overflow bit was
       set when glRenderMode() was called, a negative hit  record
       count is returned.

NOTES    [Toc]    [Back]

       The  contents  of buffer is undefined until glRenderMode()
       is called with an argument other than GL_SELECT.

       glBegin()/glEnd() primitives and  calls  to  glRasterPos()
       can result in hits.

ERRORS    [Toc]    [Back]

       GL_INVALID_VALUE is generated if size is negative.

       GL_INVALID_OPERATION  is  generated if glSelectBuffer() is
       called while the render mode is GL_SELECT, or if glRenderMode()
  is called with argument GL_SELECT before glSelectBuffer()
 is called at least once.

       GL_INVALID_OPERATION is generated if  glSelectBuffer()  is
       executed between the execution of glBegin() and the corresponding
 execution of glEnd().

ASSOCIATED GETS    [Toc]    [Back]

       glGet() with argument GL_NAME_STACK_DEPTH
       glGet() with argument GL_SELECTION_BUFFER_SIZE
       glGetPointerv() with argument GL_SELECTION_BUFFER_POINTER

SEE ALSO    [Toc]    [Back]

       glFeedbackBuffer(3),    glInitNames(3),     glLoadName(3),
       glPushName(3), glRenderMode(3)

[ Back ]
 Similar pages
Name OS Title
doublebuffer IRIX sets the display mode to double buffer mode
xcutsel Tru64 interchange between cut buffer and selection
xcutsel IRIX interchange between cut buffer and selection
glclearaccum IRIX specify clear values for the accumulation buffer
glClearAccum Tru64 specify clear values for the accumulation buffer
cmode IRIX sets color map mode as the current mode.
unicode_stop Linux put the console out of unicode mode (ie. in 8-bit mode).
t_open IRIX establish a transport endpoint
setmnt IRIX establish mount table
isr_add_autovect NetBSD establish interrupt handler
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service