Координаты мыши уже в декартовых координатах, а именно координаты пространства окна.Я думаю, что вы ищете, это превращение в мировое пространство вашей OpenGL-сцены.В двухмерных координатах мыши в окне отсутствует некоторая информация: глубина.
Так что вы можете увидеть на самом деле луч от «камеры» в сцену.Для этого вам необходимо выполнить обратную проекцию из экранного пространства в мировое пространство.Для этого вы берете матрицу проекции P и матрицу вида V (которая генерируется с помощью gluLookAt или аналогичной), формируете произведение P * V и инвертируете его, т. Е. (P * V) ^ - 1 = V ^ -1 * P ^ -1.Обратите внимание, что инверсия не является транспозицией.Инвертирование матрицы выполняется методом исключения Гаусса-Джордана, предпочтительно с некоторым поворотом.Любой математический учебник по линейной алгебре объясняет это.
Тогда вам нужно два вектора для формирования луча.Для этого вы берете две позиции на экране с одинаковыми координатами XY, но разной глубиной (скажем, 0 и 1) и выполняете обратную проекцию:
(P*V)^-1 * (x, y, {0, 1})
Разница результирующих векторов дает направление луча.
Весь процесс обратного проецирования был включен в gluUnProject.Однако я рекомендую не использовать его в форме GLU, а либо посмотреть на исходный код, чтобы поучиться у него, либо использовать современную замену, как это предлагает GLM.