M
Den Code kann ich leider nich zeigen, aber:
Beim Selektieren bekommst du ja im Hit Record den minimalen und maximalesn z-Buffer Wert des "getroffenen" Objekts, der jedoch noch durch 2^32 - 1 dividiert werden muss, um ihn in den Intervall [0,1] zu transformieren -> Red Book Kapitel 13.
Verwende einfach diesen Wert für gluUnproject, da dort auch die Tiefeninformation des z-Buffer benötigt wird.
beim selektieren:
GLuint* hitRecord;
glSelectBuffer(groesse, hitRecord);
glRenderMode(GL_SELECT);
....
float zHit = (float) hitRecord[1] / 0xFFFFFFFF;
später:
gluUnProject(winX, winY, zHit , mv, pm, viewport, &resx, &resy, &resz);
und dann halt noch die Differenz bilden. Ich weiß, es ist nicht optimal erklärt. Bei Problemen einfach nochmals nachfragen