Что делает OrthoM() под капотом?

Я прочитал документацию и там написано, что она создает матрицу ортографической проекции. Но как выглядит матрица, которую она использует для расчетов?

Я ввожу значения в метод:

0, 105.0, 495.0, 190.0, 410.0, 0, 1

и это выводит:

0.0051282053, 0.0, 0.0, 0.0, 
0.0, 0.009090909, 0.0, 0.0, 
0.0, 0.0, -2.0, 0.0, 
-1.5384616, -2.7272727, -1.0, 1.0

Как будет выглядеть полученная матрица при рисовании?

1 ответ

orthoM наследует свой API от glOrtho, что задокументировано на соответствующей странице руководства; Основываясь на быстром поиске, воспроизведение Microsoft, похоже, сохранило правильное форматирование.

Так:

2 / (right - left)        0                         0                       tx
0                         2 / (top - bottom)        0                       ty
0                         0                         2 / (far - near)        tz
0                         0                         0                       1

... где tx = - (right + left) / (right - left), ty = - (top + bottom) / (top - bottom) а также tz = - (far + near) / (far - near),

Значение, которое вы напечатали, - это транспонированная матрица, потому что OpenGL является главным столбцом.

Другие вопросы по тегам