const float ar         = m_persProj.Width / m_persProj.Height;
    const float zNear      = m_persProj.zNear;
    const float zFar       = m_persProj.zFar;
    const float zRange     = zNear - zFar;
    const float tanHalfFOV = tanf(ToRadian(m_persProj.FOV / 2.0f));

    m.m[0][0] = 1.0f/(tanHalfFOV * ar); m.m[0][1] = 0.0f;            m.m[0][2] = 0.0f;                   m.m[0][3] = 0.0;
    m.m[1][0] = 0.0f;                   m.m[1][1] = 1.0f/tanHalfFOV; m.m[1][2] = 0.0f;                   m.m[1][3] = 0.0;
    m.m[2][0] = 0.0f;                   m.m[2][1] = 0.0f;            m.m[2][2] = (-zNear -zFar)/zRange ; m.m[2][3] = 2.0f * zFar*zNear/zRange;
    m.m[3][0] = 0.0f;                   m.m[3][1] = 0.0f;            m.m[3][2] = 1.0f;                   m.m[3][3] = 0.0;

公式解释:

http://ogldev.atspace.co.uk/www/tutorial12/tutorial12.html

posted on 2014-07-30 12:12  kid_coder  阅读(96)  评论(0)    收藏  举报