Что делает 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 является главным столбцом.