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()这个函数(就是把当前矩阵重置为单位矩阵)。
透视原理:
我们知道,远处的东西看起来要小一些,近处的东西看起来会大一些,这就是透视原理,如下图所示