void View::GetCamCoordinates(const OpenGlRenderState& cam_state, double winx, double winy, double winzdepth, GLdouble& x, GLdouble& y, GLdouble& z) const { const GLint viewport[4] = {v.l,v.b,v.w,v.h}; const OpenGlMatrix proj = cam_state.GetProjectionMatrix(); #ifndef HAVE_GLES glUnProject(winx, winy, winzdepth, Identity4d, proj.m, viewport, &x, &y, &z); #else glUnProject(winx, winy, winzdepth, Identity4f, proj.m, viewport, &x, &y, &z); #endif }
void View::GetObjectCoordinates(const OpenGlRenderState& cam_state, double winx, double winy, double winzdepth, GLdouble& x, GLdouble& y, GLdouble& z) const { const GLint viewport[4] = {v.l,v.b,v.w,v.h}; const OpenGlMatrix proj = cam_state.GetProjectionMatrix(); const OpenGlMatrix mv = cam_state.GetModelViewMatrix(); glUnProject(winx, winy, winzdepth, mv.m, proj.m, viewport, &x, &y, &z); }
void Handler3D::PixelUnproject( View& view, GLprecision winx, GLprecision winy, GLprecision winz, GLprecision Pc[3]) { const GLint viewport[4] = {view.v.l,view.v.b,view.v.w,view.v.h}; const pangolin::OpenGlMatrix proj = cam_state->GetProjectionMatrix(); glUnProject(winx, winy, winz, Identity4d, proj.m, viewport, &Pc[0], &Pc[1], &Pc[2]); }