GL provides two related mechanisms for returning information about where primitives are being drawn:
Picking returns all primitives that are currently being drawn in the vicinity of the cursor. Selecting returns all primitives that are being drawn into a 3-D rectilinear volume in world space. Both methods return the same type of data and use the same general mechanism for their operation. They differ in the way that the picking region or selecting volume is specified.
There are three concepts behind picking/selecting: