13

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

顶部 = tan(fov*3.14159/360.0) * 接近底部 = -top

左 = 方面 * 右下 = 方面 * 上

我似乎无法正确转换我的视野。例如,如果我的 FOV 是 45,那么 Frustum 调用中的“顶部”参数是什么?

4

1 回答 1

32

我们开始 - 您可以使用以下方法代替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页面上找到更多代码说明。

于 2012-10-17T21:11:51.590 回答