glSelectBuffer
[New
- Windows 95, OEM Service Release 2]
The glSelectBuffer
function establishes a buffer for selection mode values.
void glSelectBuffer(
GLsizei size, |
|
GLuint *buffer |
|
); |
|
Parameters
size
The size of buffer.
buffer
Returns the
selection data.
Remarks
The glSelectBuffer
function has two parameters: buffer is a pointer to an array of unsigned
integers, and size indicates the size of the array. The buffer
parameter returns values from the name stack (see glInitNames
Selection is
used by a programmer 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
intersects the clip 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
Returned
depth values are mapped such that the largest unsigned integer value
corresponds to window coordinate depth 1.0, and zero corresponds to window
coordinate depth 0.0.
An internal
index into buffer is reset to zero 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 flag is set. If the name stack is empty
when a hit record is copied, that record consists of zero followed by the
minimum and maximum depth values.
Selection
mode is exited by calling 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 flag 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.
The contents
of buffer are undefined until glRenderMode
The glBegin/glEnd
primitives and calls to glRasterPos
The following
function retrieves information related to glSelectBuffer:
glGet
with argument GL_NAME_STACK_DEPTH
Error Codes
The following
are the error codes generated and their conditions.
Error
Code |
Condition |
GL_INVALID_VALUE
|
size was negative. |
GL_INVALID_OPERATION
|
glSelectBuffer was called while the render mode was GL_SELECT, or
if glRenderMode |
GL_INVALID_OPERATION
|
glSelectBuffer was called between a call to glBegin and the
corresponding call to glEnd. |
See Also