Почему не работает моя матрица ортогональной проекции? - PullRequest
3 голосов
/ 05 февраля 2012

Я пытаюсь сделать несколько квадов, расположенных в плоскости (z = 0), с помощью ортогональной проекции. Я настроил матрицу проекции после прочтения формулы для матрицы ортогональной проекции? , но я думаю, что сделал что-то не так.

Моей первой попыткой была следующая матрица. W и H - ширина и высота моего желаемого окна просмотра, которое составляет 640x640 в следующих примерах:

 ˹ 2/w 0   0  0 ˺
 | 0   2/h 0  0 |
 | 0   0   0  0 |
 ˻ 0   0   0  1 ˼

Вот что я получил, когда рендерил четырехугольник, угол поворота которого был в (0,0,0):

No good

Поскольку он был перевернут по вертикали, я изменил свою матрицу на:

 ˹ 2/w  0   0  0 ˺
 | 0   -2/h 0  0 |
 | 0    0   0  0 |
 ˻ 0    0   0  1 ˼

Я получил:

better


Затем я попытался переместить мой квадроцикл, и результаты оказались неожиданными. Я хотел, чтобы X и Y трехмерного пространства соответствовали окнам просмотра. Однако вот что произошло, когда я переместил квад по оси X:

ouch


Движение по оси Y дало столь же неожиданные результаты:

ouch ouch


Как я могу исправить свою матрицу так, чтобы оси X и Y трехмерного пространства совпадали с осями видового экрана? Большое спасибо заранее.

Ответы [ 2 ]

1 голос
/ 05 декабря 2013

Вы пропустили далеко отсечение.Попробуйте это

2/viewWidth    0              0             0
0             -2/viewHeight   0             0
0              0              1/(far-near)  -near/(far-near)
0              0              0             1
1 голос
/ 05 февраля 2012

Эта матрица проекции действительно верна.Проблема была в коде перевода четырехъядерных кодов, извините за испорченность.

...