1
Это как результат выглядит следующим образом: Перспектива Матрица кажется неправильным
и тот же результат, используя матрицу ортогонального:
Любая идея, почему использование проекции матрица делает все выглядеть странно?
Моя перспектива:
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);
}
Вы должны выполнить базовую отладку. Запустите некоторые тестовые координаты через свой код. –
@Oliver Я тестировал его с помощью Vector3 и сравнивал перспективы и ортогонально. Только ось Z была различной (перспектива Z была 1 больше ортогональной). Так что что-то не так с осью Z? – PuRe