gluPerspective的替换(使用glFrustum)

时间:2012-10-17 20:51:05

标签: c++ opengl

您如何将gluPerspective函数转换为glFrustum?我试图使用这个等式,但没有任何运气,因为它没有生成与gluPerspective相同的图像。

  

top = tan(fov * 3.14159 / 360.0)*附近   bottom = -top

     

左=方面*底部   right = aspect * top

我似乎无法正确转换我的视野。比方说,如果我的FOV是45,那么Frustum电话中的“顶级”参数会是什么?

1 个答案:

答案 0 :(得分:25)

我们开始 - 您可以使用以下方法替代gluPerspective

void perspectiveGL( GLdouble fovY, GLdouble aspect, GLdouble zNear, GLdouble zFar )
{
    const GLdouble pi = 3.1415926535897932384626433832795;
    GLdouble fW, fH;

    //fH = tan( (fovY / 2) / 180 * pi ) * zNear;
    fH = tan( fovY / 360 * pi ) * zNear;
    fW = fH * aspect;

    glFrustum( -fW, fW, -fH, fH, zNear, zFar );
}

您可以在nehe页面上找到有关代码的更多说明。