glu.PickMatrix(x, y, deltax, deltay, viewportArray)
glu.PickMatrix()
creates a projection matrix that can be used to restrict drawing to a small region of the viewport.
This is typically useful to determine what objects are being drawn near the cursor. Use glu.PickMatrix()
to restrict
drawing to a small region around the cursor. Then, enter selection mode (with gl.RenderMode())
and 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 glu.PickMatrix()
is multiplied by the current matrix just as if gl.MultMatrix()
is called with the generated matrix. To effectively use the generated pick matrix for picking, first call gl.LoadIdentity()
to load an identity matrix onto the perspective matrix stack. Then call glu.PickMatrix()
, and finally, call a command (such as
glu.Perspective()) to multiply the perspective matrix by the pick matrix.
When using glu.PickMatrix()
to pick NURBS, be careful to turn off the NURBS property #GLU_AUTO_LOAD_MATRIX
. If #GLU_AUTO_LOAD_MATRIX
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.
The four window coordinates for viewportArray
can easily be obtained by calling gl.Get()
with #GL_VIEWPORT
. See gl.Get for details.
Please consult an OpenGL reference manual for more information.