OpenGL документация за gluProject
пишет, что проекция точки v
вычисляется с использованием заданной матрицы проекции и вида модели через v'' = P * M * v
затем координаты окна выводятся с использованием текущего окна просмотра, например, winZ = (v''(2) + 1)/2
,
Разве это не упускает перспективное разделение v''
от v''(3)
? Итак, мы должны иметь такие формулы, как winZ = (v''(2)/v''(3) + 1)/2
,
Это согласуется с реализацией opengl моей машины и реализацией на OpenGL вики.
Итак, документация неправильная?
Да, в документации, похоже, отсутствует пропасть (что является единственной причиной возврата GLU_FALSE
, Кстати). Проверить меза реализация (строки 249-252), например.
Других решений пока нет …