- Vector3f Core::screenTo3d( int x, int y)
- {
- GLdouble modelMatrix[16];
- GLdouble projMatrix[16];
- GLint viewport[4];
- GLdouble sx, sy, sz, z;
- glGetDoublev( GL_MODELVIEW_MATRIX, modelMatrix);
- glGetDoublev( GL_PROJECTION_MATRIX, projMatrix);
- glGetIntegerv( GL_VIEWPORT, viewport);
- glReadPixels( x, viewport[3] - y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z);
- gluUnProject( (float)x, (float)viewport[3] - (float)y, z, modelMatrix, projMatrix, viewport, &sx, &sy, &sz);
- return Vector3f( sx, sy, sz);
- }