Maps window and clip coordinates to object coordinates.
OpenGL C bindings library: libGL.a
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 )
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:
( 2(winX - view[0] )
| ---------------- - 1 |
| view[2] |
| |
| 2(winY - view[1] |
( objX ) | ---------------- - 1 |
| objY | = INV(PM) * | view[3] |
| objZ | | |
( objW ) | 2(winZ - near) |
| -------------- - 1 |
| far - near |
| |
( clipW )
INV( ) denotes matrix inversion.
gluUnProject4 is equivalent to gluUnProject when clipW is 1, near is 0 and far is 1.
| /usr/include/GL/gl.h | Contains C language constraints, variable type definitions, and ANSI function prototypes for OpenGL. |
The glGet subroutine, glFeedbackBuffer subroutine, gluProject subroutine, gluUnProject subroutine.