Об умножении матриц OpenGL

http://www.cs.uaf.edu/2007/spring/cs481/lecture/01_23_matrices.html

Я только что закончил читать это, но у меня есть 2 вопроса об умножениях.

gl_Position = gl_ProjectionMatrix*gl_ModelViewMatrix*gl_Vertex

Это конечные координаты экрана (x, y), когда я их все умножаю. Что, если я умножу только gl_ModelViewMatrix*gl_Vertex или gl_ProjectionMatrix*gl_Vertex? И что означает gl_Vertex отдельно?


person deniz    schedule 08.02.2013    source источник
comment
Чтобы понять всю глубину того, что означает эта линия, я действительно рекомендую получить представление о различных координатных пространствах, распространенных в 3D-приложениях, таких как пространство модели, мировое пространство, пространство глаза/камеры, пространство клипа, пространство проекции, нормализованное устройство. координатное пространство и т. д. glprogramming.com/red/chapter03.html   -  person legends2k    schedule 08.02.2013


Ответы (2)


Что, если я умножу только gl_ModelViewMatrix*gl_Vertex или gl_ProjectionMatrix*gl_Vertex?

Тогда матрица проекции (1-й случай) или матрица модели-вида (2-й случай) не будут действовать. Если они являются тождественными матрицами, вы не увидите эффекта. Если это не так, то ваш угол обзора или положение могут быть неправильными.

И что означает gl_Vertex отдельно?

gl_Vertex — это координата вершины, которая передается на вход конвейера.

person BЈовић    schedule 08.02.2013
comment
Спасибо, но вернет ли gl_ModelViewMatrix*gl_Vertex что-то важное, что я смогу использовать в будущем? - person deniz; 08.02.2013
comment
@deniz Да, он возвращает положение вершины после применения преобразования модели-представления. Эта статья хорошо объясняет преобразования - person BЈовић; 08.02.2013

gl_Vertex — координата вершины в мировом пространстве. вершины и глаз могут быть произвольно размещены и ориентированы в мировом пространстве.

После умножения на ModelViewMatrix вы получаете координату вершины в «пространстве глаза», системе координат с глазом в 0,0,0. Умножение на матрицу проекции (и выполнение этого деления однородной системы координат) дает вам координаты в пространстве экрана. Это еще не пиксельные координаты, а некоторая нормализованная система координат с 0,0,0 в центре экрана/окна. Преобразование области просмотра является последним. Он сопоставляет изображение с координатами окна (пикселя?).

Объяснение дано в:

http://www.srk.fer.hr/~unreal/theredbook/ Глава 3.

person limbo    schedule 08.02.2013