OpenGL函数解析之gluPerspective()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenGL函数解析之gluPerspective()相关的知识,希望对你有一定的参考价值。

函数原型:

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar);

参数说明:

fovy:指定视景体的视野的角度,以度数为单位,y轴的上下方向。

aspect:指定视景体的宽高比(x平面上)。

zNear:指定观察者到视景体的最近的裁剪面的距离。

zFar:指定观察者到视景体的最远的裁剪面的距离。

函数说明:

gluPerspective()函数设置透视投影矩阵,一般在执行该函数glMatrixMode(GL_PROJECTION)和glLoadIdentity()之后使用。它指定了要观察的视景体在世界坐标系中的具体大小,一般而言,其中参数aspect应该与窗口的宽高比大小相同。比如说aspect = 2.0,表示在观察者的角度中物体的宽度是高度的两倍,在视口中的宽度也是高度的两倍,这样显示的物体才不会扭曲。

由gluPerspective()产生的矩阵是当前矩阵与指定的矩阵相乘得到的,就好像是调用glMatrix()产生的矩阵是一样的。为使透视矩阵替代当前矩阵,在调用gluPerspective()之前要调用glLoadIdentity()函数,把当前矩阵重置为单位矩阵。

透视原理:

远处的东西看起来比近处的东西会小一些,这就是对透视原理很精简的阐释。

举个例子:

技术分享

假设那两条线表示公路,理论上讲,它们的两边都是平行的。但是在实际情况中,从一头向远处(可以是无限远)看,两边总要相交于一点。实际上线段AB的长度和CD的长度是相等的,但是在图中使用了透视角,才会出现length(AB) > length(CD)。

以上是关于OpenGL函数解析之gluPerspective()的主要内容,如果未能解决你的问题,请参考以下文章

gluPerspective 在 OpenGL 3.1 中被删除,有啥替代品吗?

Qt 和 openGL 的 gluPerspective 等效项

QT 开发opengl 错误1

openGL学习过程中资料总结

OpenGL函数解析之glLoadIdentity()

翻译 View Frustum Culling --1 View Frustum’s Shape