Для ленивых:
type
THIGL_gluCoord = class(TDebug)
private
Viewport: Array [0..3] of GLInt; // параметры viewport-a.
ProjMatrix: Array [0..15] of GLDouble;// матрица проекции.
mvMatrix: Array [0..15] of GLDouble; // видовая матрица.
wX,wY,wZ:GLdouble; // возвращаемые оконные/мировые координаты.
procedure THIGL_gluCoord._work_doGluProject; // преобразование мировых координат в оконные
var
X : Real;
Y : Real;
Z : Real;
begin
X:=ReadReal(_data,_data_X,_prop_X);
Y:=ReadReal(_data,_data_Y,_prop_Y);
Z:=ReadReal(_data,_data_Z,_prop_Z);
glGetIntegerv(GL_VIEWPORT,@Viewport); // узнаём параметры viewport-a.
glGetDoublev(GL_PROJECTION_MATRIX,@ProjMatrix); // узнаём матрицу проекции.
glGetDoublev(GL_MODELVIEW_MATRIX,@mvMatrix); // узнаём видовую матрицу.
gluProject(X,Y,Z, @mvMatrix, @ProjMatrix, @Viewport, wx, wy, wz);
_hi_onEvent(_event_onGluProject);
end;