下面我们学习OpenGL的视野与投影
视野(可视空间)就是视点能够看见的想象的空间的范围,我们创建的物体对象就在想象的空间之中,如果对象在视野之外,那就不能投影(映射)在屏幕上,也就看不见了。
视点的设置函数:gluLookAt。它的参数比较多,前三个参数表示了观察点的位置,中间三个参数表示了观察目标的位置,最后三个参数代表从(0,0,0)到 (x,y,z)的直线,它表示了观察者认为的“上”方向。从观察点的位置到观察目标的位置构成的方向就是视点所对的方向。
设置视野的函数有glFrustum、glOrtho和gluPerspective,glFrustum函数以透视投影的方式设置视野,glOrtho以正投影方式设置视野,gluPerspective和glFrustum效果相同,但函数参数不同。
透视投影有近大远小的效果,物体对象投影在屏幕上就如我们肉眼所见的那样,而正投影则没有这样的效果,无论对象离视点有多远,投影在屏幕上都是一样的大小。
视野由2个想象的矩形和它们的4个顶点的连线封闭而成,离视点近的是近矩形,离视点远的是远矩形,
glFrustum和glOrtho的参数相同,前面4个参数分别是近矩形中心与4条边的距离的矢量表示,后面2个参数是2个矩形与视点的距离,如果是负数,则表示在视点的后面,不可见。gluPerspective第一个参数表示近矩形上下2条边的中心与视点形成的角度,第二个参数表示近矩形的宽高比(width/height),后面2个参数和glFrustum的相同。
如果要创建在3D空间中漫游的效果,必须使用gluPerspective或glFrustum设置透视投影方式的视野。