Как opengl проецирует трехмерную точку на пространство экрана? - PullRequest
4 голосов
/ 26 мая 2011

Я пытаюсь эмулировать подмножество opengl с моим собственным программным растеризатором.

Я предполагаю, что процесс выглядит следующим образом:

Умножьте 3D точку наматрица вида модели -> умножить полученный результат на матрицу проекции

Это правильно?

Кроме того, какой размер матрицы проекции и как она работает?

Ответы [ 3 ]

5 голосов
/ 26 мая 2011

Точка умножается на матрицу вида модели, а затем на матрицу проекции. Полученный результат нормализуется, а затем умножается на матрицу видового экрана для получения координат экрана Все матрицы являются матрицами 4X4. Вы можете просмотреть эту ссылку для получения дополнительной информации.

http://www.songho.ca/opengl/gl_transform.html#example2

4 голосов
/ 26 мая 2011

(бесстыдная самореклама, извините) Я написал учебник на эту тему:

http://www.opengl -tutorial.org / начинающие-учебники / учебник-3-матрица /

Есть небольшое предостережение, которое я не объясняю. В конце урока вы находитесь в нормализованных координатах устройства, то есть от -1 до +1. Простое линейное отображение преобразует это в [0-screenize].

2 голосов
/ 26 мая 2011

Вы также можете воспользоваться кодом gluProject () .Это берет x , y , z точку в объект координаты, а также указатели на modelView , проекция и матрица просмотра матрицы и сообщает вам, что x , y , ( z ) находятся в screenspace (z - это значение от 0 до 1, которое можно использовать в буфере глубины).Все три умножения матриц показаны там в коде вместе с делениями, необходимыми для перспективы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...