2014-12-07 5 views
1

Это как результат выглядит следующим образом: enter image description hereПерспектива Матрица кажется неправильным

и тот же результат, используя матрицу ортогонального: enter image description here

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

Моя перспектива:

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); 
    } 
+0

Вы должны выполнить базовую отладку. Запустите некоторые тестовые координаты через свой код. –

+0

@Oliver Я тестировал его с помощью Vector3 и сравнивал перспективы и ортогонально. Только ось Z была различной (перспектива Z была 1 больше ортогональной). Так что что-то не так с осью Z? – PuRe

ответ

0

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

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