Я портирую GLU gluUnproject метод для современного OpenGL. Я обычно понимаю алгоритм, лежащий в его основе, но мой вопрос заключается в том, зачем нам нужна матрица представления модели? Это может быть просто матрица просмотра? Мы не проецируем экранные координаты в мировое пространство, так почему мне нужно предоставить также некоторая матрица модели объекта (как часть представления модели)? Или, может быть, я неправильно понял, как использовать метод? Я никогда не использовал фиксированный конвейер.
gluUnproject обычно описывается как преобразование координат из пространства экрана (назад) в объект пространство. Тем не менее, вы всегда можете использовать любые матрицы, которые вам нравятся, чтобы попасть в какое-то другое пространство, так что простое использование матрицы представлений даст вам значения мирового пространства, которые вас интересуют. Конвейер фиксированных функций GL никогда не использовал явное мировое пространство и всегда работал непосредственно над составлением модели и матрицы представления.
Других решений пока нет …