Матрица перспективы кажется неправильной

Вот как выглядит результат: введите здесь описание изображения

и тот же результат с использованием ортогональной матрицы: введите здесь описание изображения

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

Моя точка зрения:

 inline static Matrix<T> ProjectionPerspectiveOffCenterLH(const T left, const T right, const T bottom, const T top, const T zNear, const T zFar)
  {
    return Matrix<T>(
      (2.0f * zNear) / (right-left), 0.0f, 0.0f, 0.0f,
      0.0f, (2.0f * zNear) / (top-bottom), 0.0f, 0.0f,
      (left+right)/(left-right), (top+bottom)/(bottom-top), zFar / (zFar - zNear), 1.0f,
      0.0f, 0.0f, (zNear * zFar) / (zNear - zFar), 0.0f);
  }

Мой ортогональный:

inline static Matrix<T> ProjectionOrthogonalOffCenterLH(const T left, const T right, const T bottom, const T top, const T zNear, const T zFar)
  {
    T farNear = zFar - zNear;

    return Matrix<T>(
      2.0f / (right-left), 0.0f, 0.0f, 0.0f,
      0.0f, 2.0f / (top-bottom), 0.0f, 0.0f,
      0.0f, 0.0f, 1.0f / farNear, 0.0f,
      (left + right) / (left - right), (top + bottom) / (bottom - top), -zNear / farNear, 1.0f);
  }

person PuRe    schedule 07.12.2014    source источник
comment
Вы должны выполнить базовую отладку. Запустите некоторые тестовые координаты через свой код.   -  person Oliver Charlesworth    schedule 07.12.2014
comment
@Oliver Я проверил это с помощью Vector3 и сравнил перспективу и ортогональность. Отличалась только ось Z (Z перспективы была на 1 больше, чем ортогональная). Значит, что-то не так с осью Z?   -  person PuRe    schedule 08.12.2014


Ответы (1)


Только что узнал, почему так происходит:

В моей матрице перспективы FOV равен 0°. Вот почему это выглядит так. Так что лучше используйте Perspective FOV Matrix.

person PuRe    schedule 09.12.2014