gluPickMatrix
[New
- Windows 95, OEM Service Release 2]
The gluPickMatrix function defines a picking
region.
void gluPickMatrix(
GLdouble x, |
|
GLdouble y, |
|
GLdouble width, |
|
GLdouble height,
|
|
GLint viewport[4] |
|
); |
|
Parameters
x,
y
The center of
a picking region in window coordinates.
width,
height
The width and
height, respectively, of the picking region in window coordinates.
viewport
The current
viewport (as from a glGetIntegerv
Remarks
The gluPickMatrix function creates a projection
matrix you can use to restrict drawing to a small region of the viewport.
{bmc bm4.MRB} To determine which objects are being drawn near the cursor
1. Use gluPickMatrix to restrict drawing
to a small region around the cursor.
2. Enter selection mode (with glRenderMode ), and then rerender the
scene.
All primitives that would have been drawn near the cursor are
identified and stored in the selection buffer.
The matrix created by gluPickMatrix is
multiplied by the current matrix just as if glMultMatrix
{bmc bm4.MRB} To effectively use the generated pick matrix for picking
1. Call glLoadIdentity to load an identity matrix
onto the perspective matrix stack.
2. Call gluPickMatrix.
3. Call a function (such as gluPerspective ) to multiply the perspective
matrix by the pick matrix.
When using gluPickMatrix to pick NURBS, be
careful to turn off the NURBS property GLU_AUTO_LOAD_MATRIX. If
GLU_AUTO_LOAD_MATRIX is not turned off, any NURBS surface rendered is
subdivided differently with the pick matrix from how it was subdivided without
the pick matrix.
Example
When
rendering a scene as follows:
glMatrixMode(GL_PROJECTION);
glLoadIdentity( );
gluPerspective(. . .);
glMatrixMode(GL_MODELVIEW);
/* Draw the scene */
the following
code selects a portion of the viewport:
glMatrixMode(GL_PROJECTION);
glLoadIdentity( );
gluPickMatrix(x, y, width, height, viewport);
gluPerspective(. . .);
glMatrixMode(GL_MODELVIEW);
/* Draw the scene */
See Also