public PO Map_to_Space(int x, int y) { util u1 = new util(); unsafe { double *modelview = stackalloc double[16]; double *projection = stackalloc double[16]; int * viewport = stackalloc int[4]; PO pf; double z; pf = new PO(); GLU.glGetDoublev(GLU.GL_MODELVIEW_MATRIX, modelview); GLU.glGetDoublev(GLU.GL_PROJECTION_MATRIX, projection); GLU.glGetIntegerv(GLU.GL_VIEWPORT, viewport); GLU.glReadPixels(x, y, 1, 1, GLU.GL_DEPTH_COMPONENT, GLU.GL_FLOAT, &z); double world_x, world_y, world_z; GLU.gluUnProject((double)x, (double)(viewport[3] - y - 1), 1, modelview, projection, viewport, &world_x, &world_y, &world_z); pf.x = (float)world_x; pf.y = (float)world_y; pf.z = 0; return(pf); } }