Advertisement
Guest User

Untitled

a guest
Aug 11th, 2013
1,366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1.         bool invert = false;
  2.  
  3.         QMatrix4x4 viewMatrix       = m_camera->viewMatrix();
  4.         QMatrix4x4 modelViewMatrix  = viewMatrix * m_modelMatrix;
  5.         QMatrix4x4 modelViewProject = m_camera->projectionMatrix() * modelViewMatrix;
  6.         QMatrix4x4 inverted         = m_viewportMatrix * modelViewProject;
  7.  
  8.         inverted = inverted.inverted(&invert);
  9.  
  10.         float posZ;
  11.         int   posY = (int)m_viewportSize.y() - (int)mouse_position.y() - 1;
  12.  
  13.         m_funcs->glReadPixels((int)mouse_position.x(), posY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &posZ);
  14.  
  15.         QVector4D clickedPointOnScreen(mouse_position.x(), posY, posZ, 1.0f);
  16.         QVector4D clickedPointIn3DOrgn = inverted * clickedPointOnScreen;
  17.  
  18.         clickedPointIn3DOrgn = clickedPointIn3DOrgn / clickedPointIn3DOrgn.w();
  19.  
  20.         terrain_pos = clickedPointIn3DOrgn.toVector3DAffine();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement