Name

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 near , GLdouble far , GLdouble* objX , GLdouble* objY , GLdouble* objZ , GLdouble* objW );

Python Specification

gluUnProject4 ( winX , winY , winZ , clipW , model = None , proj = None , view = None , near = 0.0, far = 1.0) → (objX, objY, objZ, 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).
near, far
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 coordinates 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 GL_4D_COLOR_TEXTURE is returned. This also handles the case where the near and far planes are different from the default, 0 and 1, respectively. A return value of GL_TRUE indicates success; a return value of GL_FALSE indicates failure.

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

(
objX
objY
objZ
objW
)
=INV(PM)(
2(winXview[0])
view[2]
1
2(winYview[1])
view[3]
1
2(winZnear)
(farnear)
1
clipW
)

INV() denotes matrix inversion.

gluUnProject4 is equivalent to gluUnProject when clipW is 1, near is 0 and far is 1.

Notes

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

See Also

glGet , glFeedbackBuffer , gluProject , gluUnProject