GLdouble _y,
GLdouble _d_e_l_X,
GLdouble _d_e_l_Y,
GLint _*_v_i_e_w_p_o_r_t )
delim $$
The matrix created by gglluuPPiicckkMMaattrriixx is multiplied by the current matrix just as if ggllMMuullttMMaattrriixx is called with the generated matrix. To effectively use the generated pick matrix for picking, first call ggllLLooaaddIIddeennttiittyy to load an identity matrix onto the perspective matrix stack. Then call gglluuPPiicckkMMaattrriixx, and finally, call a command (such as gglluuPPeerrssppeeccttiivvee) to multiply the perspective matrix by the pick matrix.
When using gglluuPPiicckkMMaattrriixx to pick NURBS, be careful to turn off the NURBS property GGLLUU__AAUUTTOO__LLOOAADD__MMAATTRRIIXX. If GGLLUU__AAUUTTOO__LLOOAADD__MMAATTRRIIXX is not turned off, then any NURBS surface rendered is subdivided differently with the pick matrix than the way it was subdivided without the pick matrix.
a portion of the viewport can be selected as a pick region like this:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPickMatrix(x, y, width, height, viewport);
gluPerspective(...);
glMatrixMode(GL_MODELVIEW);