Вот как выглядит результат:
и тот же результат с использованием ортогональной матрицы:
Есть идеи, почему при использовании проекционной матрицы все выглядит странно?
Моя перспектива:
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 °. Вот почему это выглядит так.
Поэтому лучше использовать перспективную матрицу поля зрения.