OpenGL: Weltkoordinaten bestimmen
-
Hi!!!
Ich habe folgenden Code:
float Buffer; float depth; GLint viewport[4]; glGetIntegerv (GL_VIEWPORT, viewport); GLint realy = viewport[3] - (GLint) Y - 1; glReadPixels(X,realy,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&depth); GLdouble mvmatrix[16], projmatrix[16]; //GLint realy; // OpenGL y coordinate position GLdouble wx, wy, wz; glGetIntegerv (GL_VIEWPORT, viewport); glGetDoublev (GL_MODELVIEW_MATRIX, mvmatrix); glGetDoublev (GL_PROJECTION_MATRIX, projmatrix); gluUnProject ((GLdouble) X, (GLdouble) realy, depth, mvmatrix, projmatrix, viewport, &wx, &wy, &wz); LX->Caption = wx; LY->Caption = wy; LZ->Caption = wz;
Hiermit möchte ich die Koordinate eines einzelnen Punktes bestimmen. die Z-Werte stimmen glaube ich auch soweit. Jedoch sind die X und Y Werte falsch. Dort setzt er einfach den Nullpunkt in die Mitte des Fensters und liest von dort alle Werte aus...Warum ließt er die falschen Werte aus? Habe ich vielleicht was übersehen?
Hiernoch ein Screenshot, der das Problem vielleicht noch etwas verdeutlicht. die drei Werte oben rechts sind X, Y und Z!
Gruß
-
Hallo,
probier einfach folgendes aus:
//***************************************************************************** //Variablen fuer Weltkooordinatenermittlung //***************************************************************************** GLint viewport[4]; GLdouble mvmatrix[16], projmatrix[16]; GLint realy; GLdouble wx, wy, wz; //***************************************************************************** //********************************************************************* //Weltkoordinaten ermitteln //********************************************************************* glGetIntegerv(GL_VIEWPORT, viewport); glGetDoublev(GL_MODELVIEW_MATRIX, mvmatrix); glGetDoublev(GL_PROJECTION_MATRIX, projmatrix); realy = viewport[3] - (GLint) Y - 1; gluUnProject((GLdouble) X , (GLdouble) realy, 0.0, mvmatrix, projmatrix, viewport, &wx, &wy, &wz); //********************************************************************* Edit1->Text=wx; Edit2->Text=wy; Edit3->Text=wz;
Bei mir klappt das so wunderbar.
Gruss.Anne.