- type
- TDoubleArray = array[0..2] of double;
- function GetOGLPos(X, Y: Integer): TDoubleArray;
- var
- viewport: array [1..4] of Integer;
- modelview: array [1..16] of Double;
- projection: array [1..16] of Double;
- winZ: Single;
- begin
- glGetDoublev(GL_MODELVIEW_MATRIX, @modelview);
- glGetDoublev(GL_PROJECTION_MATRIX, @projection);
- glGetIntegerv(GL_VIEWPORT, @viewport);
- glReadPixels(X, -Y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, @winZ);
- gluUnProject(X, viewport[4]-Y, winZ,
- @modelview, @projection, @viewport,
- Result[0], Result[1], Result[2])
- end;