---
name: "gluPickMatrix"
section: "3x"
platform: "linux"
package: "xlibmesa-glu-dev"
version: "4.3.0.dfsg.1-14sarge7"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/gluPickMatrix"
---

# gluPickMatrix(3x)

define a picking region

## NAME

**gluPickMatrix** - define a picking region

## C SPECIFICATION

void **gluPickMatrix**( GLdouble *x*,

```
	GLdouble y,
	GLdouble delX,
	GLdouble delY,
	GLint *viewport )
```

delim $$

## PARAMETERS

- *x*, *y*

  Specify the center of a picking region in window coordinates.

- *delX*, *delY*

  Specify the width and height, respectively, of the picking region in window  coordinates.

- *viewport*

  Specifies the current viewport (as from a **glGetIntegerv** call).

## DESCRIPTION

**gluPickMatrix** 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 **gluPickMatrix** to restrict drawing to a small region around the cursor. Then, enter selection mode (with **glRenderMode**) 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 **gluPickMatrix** is multiplied by the current matrix just as if **glMultMatrix** is called with the generated matrix. To effectively use the generated pick matrix for picking, first call **glLoadIdentity** to load an identity matrix onto the perspective matrix stack. Then call **gluPickMatrix**, and finally, call a command (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, then any NURBS surface rendered is subdivided differently with the pick matrix than the way it was subdivided without the pick matrix.

## EXAMPLE

When rendering a scene as follows:

glMatrixMode(GL\_PROJECTION); glLoadIdentity(); gluPerspective(...); glMatrixMode(GL\_MODELVIEW);

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);

## SEE ALSO

**glGet(3G)**, **glLoadIndentity(3G)**,  **glMultMatrix(3G)**,  **glRenderMode(3G)**, **gluPerspective(3G)**
