Относно умноженията на матрици на 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 в центъра на екрана/прозореца. Трансформацията на Viewport е последна. Той преобразува изображението в координатите на прозорец (пиксел?).

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

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

person limbo    schedule 08.02.2013