gluUnProject: Unterschied zwischen den Versionen
Aus DGL Wiki
DGLBot (Diskussion | Beiträge) K (GluUnProject wurde nach gluUnProject verschoben) |
DGLBot (Diskussion | Beiträge) K (Bot: konvertiere/korrigiere <BR>) |
||
Zeile 1: | Zeile 1: | ||
= gluUnProject = | = gluUnProject = | ||
− | + | ||
+ | |||
== Name == | == Name == | ||
'''gluUnProject''' - rechnet Fensterkoordinaten in Objektkoordinaten um. | '''gluUnProject''' - rechnet Fensterkoordinaten in Objektkoordinaten um. | ||
− | + | ||
+ | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
'''function''' gluUnProject(''winx'', ''winy'', ''winz'': TGLdouble; | '''function''' gluUnProject(''winx'', ''winy'', ''winz'': TGLdouble; | ||
Zeile 13: | Zeile 15: | ||
''objx'', ''objy'', ''objz'': PGLdouble): TGLint; | ''objx'', ''objy'', ''objz'': PGLdouble): TGLint; | ||
− | + | ||
+ | |||
== Parameter == | == Parameter == | ||
Zeile 39: | Zeile 42: | ||
</table> | </table> | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
'''gluUnProject''' rechnet Fensterkoordinaten, mittels ''modelMatrix'', ''projMatrix'' und ''viewport'', in Objektkoordinaten um.<br> | '''gluUnProject''' rechnet Fensterkoordinaten, mittels ''modelMatrix'', ''projMatrix'' und ''viewport'', in Objektkoordinaten um.<br> |
Version vom 22. April 2006, 19:26 Uhr
Inhaltsverzeichnis
gluUnProject
Name
gluUnProject - rechnet Fensterkoordinaten in Objektkoordinaten um.
Delphi-Spezifikation
function gluUnProject(winx, winy, winz: TGLdouble; modelMatrix: TGLMatrixd4; projMatrix: TGLMatrixd4; viewport: TGLVectori4; objx, objy, objz: PGLdouble): TGLint;
Parameter
winx, winy, winz | Die umzurechnenden Fensterkoordinaten. |
modelMatrix | Die aktuelle Modelviewmatrix. (wie sie mittels glGetDoublev abgefragt werden kann.) |
projMatrix | Die aktuelle Projektionsmatrix. (wie sie mittels glGetDoublev abgefragt werden kann.) |
viewport | Das aktuelle Sichtfeld. (wie es mittels glGetIntegerv abgefragt werden kann.) |
objx, objy, objz | Enthält die berechneten Objektkoordinaten. |
Beschreibung
gluUnProject rechnet Fensterkoordinaten, mittels modelMatrix, projMatrix und viewport, in Objektkoordinaten um.
Das Ergebnis wird in objx, objy bzw. objz abgelegt.
Der Rückgabewert ist GL_TRUE wenn die Berechnung erfolgreich war und GL_FALSE, wenn ein Fehler aufgetreten ist.
Beispiel
function WinPosTo3DPos(X, Y: Integer): TGLVectord3; var viewport : TGLVectori4; modelview : TGLMatrixd4; projection: TGLMatrixd4; Z : TGLdouble; Y_new : TGLdouble; begin glGetDoublev(GL_MODELVIEW_MATRIX, @modelview ); //Aktuelle Modelview Matrix in einer Variable ablegen glGetDoublev(GL_PROJECTION_MATRIX, @projection ); //Aktuelle Projection[s] Matrix in einer Variable ablegen glGetIntegerv(GL_VIEWPORT, @viewport ); // Aktuellen Viewport in einer Variable ablegen Y_new := viewport[3] - y; // In OpenGL steigt Y von unten (0) nach oben // Auslesen des Tiefenpuffers an der Position (X/Y_new) glReadPixels(X, Y_new, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, @Z ); // Errechnen des Punktes welcher mit den beiden Matrizen multipliziert (X/Y_new/Z) ergibt: gluUnProject(X, Y_new, Z,modelview, projection, viewport,@Result[0], @Result[1], @Result[2]); end;