1991-2006
Silicon Graphics, Inc.
gluUnProject4
3G

# gluUnProject4

map window and clip coordinates to object coordinates

## C Specification

                    GLint gluUnProject4
                    GLdouble winX
                    GLdouble winY
                    GLdouble winZ
                    GLdouble clipW
                    const GLdouble * model
                    const GLdouble * proj
                    const GLint * view
                    GLdouble nearVal
                    GLdouble farVal
                    GLdouble* objX
                    GLdouble* objY
                    GLdouble* objZ
                    GLdouble* objW

## Parameters

`winX`
`winY`
`winZ`

  Specify the window coordinates to be mapped.

`clipW`

  Specify the clip w coordinate to be mapped.

`model`

  Specifies the modelview matrix (as from a glGetDoublev call).

`proj`

  Specifies the projection matrix (as from a glGetDoublev call).

`view`

  Specifies the viewport (as from a glGetIntegerv call).

`nearVal`
`farVal`

  Specifies the near and far planes (as from a glGetDoublev call).

`objX`
`objY`
`objZ`
`objW`

  Returns the computed object coordinates.

## Description

`gluUnProject4` maps the specified window coordinatesi: `winX`, `winY`, and `winZ` and its clip w coordinate `clipW` into object coordinates objX objY objZ objW using `model`, `proj`, and `view`. `clipW` can be other than 1 as for vertices in glFeedbackBuffer when data type `GLU_4D_COLOR_TEXTURE` is returned. This also handles the case where the `nearVal` and `farVal` planes are different from the default, 0 and 1, respectively. A return value of `GLU_TRUE` indicates success; a return value of `GLU_FALSE` indicates failure.

To compute the coordinates objX objY objZ objW , `gluUnProject4` multiplies the normalized device coordinates by the inverse of `model` * `proj` as follows:

objX objY objZ objW = INV &af; P &it; M &it; 2 &af; winX - view &af; 0 view &af; 2 - 1 2 &af; winY - view &af; 1 view &af; 3 - 1 2 &af; winZ - nearVal farVal - nearVal - 1 clipW

INV denotes matrix inversion.

`gluUnProject4` is equivalent to gluUnProject when `clipW` is 1, `nearVal` is 0, and `farVal` is 1.

## Notes

`gluUnProject4` is available only if the GLU version is 1.3 or greater.

## See Also

gluProject, gluUnProject, glFeedbackBuffer, glGet

## Copyright

Copyright 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.