透视矩阵似乎错了

时间:2014-12-07 11:04:47

标签: c++ matrix projection perspective

结果如下: 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);
  }

1 个答案:

答案 0 :(得分:0)

刚刚发现了为什么会这样:

在我的Perspective Matrix中,FOV为0°。这就是为什么它看起来像那样。 所以最好使用透视FOV矩阵。