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;