I realize this topic has been exhausted. I searched each of the Developer forums for other instances of this topic. Each one seems to give different information, so I am looking for a conclusive answer. I am converting mouse coordinates to world coordinates using code like this:
float Z;
glReadPixels(X, Y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &Z);
gluUnProject(X, Y, Z, MV, PR, VP, &WX, &WY, &WZ);
This works on some systems, but not on others. The value of Z differs with the platform. This difference is by many orders of magnitude, which results in entirely different world coordinates. So here are the questions:
-
Is the differing Z value caused by a driver bug, or was it intentionally left to the GL vendor?
-
Given the same application and mouse coordinates, can I expect comparable Z values to be read from the depth buffer? I realize they will not be “exactly” the same due to floating point arithmetic.
-
Since it is inconsistent, what else can be done to get the correct depth value?
Any help is greatly appreciated.