gluPerspective()跟gluLookAt()的理解

   纠结了一段时间去研究这两个函数,一开始的时候觉得两个函数具有使物体看上去有放大缩小的功能,但是其实是实现的原理不同的。

   先讨论一些gluPerspective(),后两组参数就不多说了,网上很多解释,主要说一下第一个角度参数,刚开始我是按照这里理解的:

   http://hi.baidu.com/ionnhelsbpcevze/item/76c5020453f18212cc34ea90

   然后揣摩了一下,可以举一个很简单的例子去了解:

   假设当fovy分别为20度、40度、60度的时候,我们所看到的范围就会越来越大,如图1、2、3:

   gluPerspective()跟gluLookAt()的理解_第1张图片                           gluPerspective()跟gluLookAt()的理解_第2张图片            gluPerspective()跟gluLookAt()的理解_第3张图片

    上面很明显,同样的窗口,显示的内容会多一点,但是问题又来了,为什么我们会觉得物体有放大缩小的效果呢?其实很简单因为窗口是固定大小的,若显示内容多的时候,物体之间就会互相挤压,所以就觉得是变小了,假设这个窗口有弹性,内容多的时候自动调节,那么物体是没有被缩小的。关键的是窗口是固定大小的,这点是比较重要!!!

     以下是用opengl做出来的效果,参数为50度和100度:

     gluPerspective()跟gluLookAt()的理解_第4张图片



    gluPerspective()跟gluLookAt()的理解_第5张图片


  接下来是讨论一下gluLookAt()函数,这个函数可以使物体有放大缩小的效果主要得益于第一组参数,那就是视点参数,其实这个比较容易理解,站得远的时候,看到的东西就会变小,站得近的时候,看到的东西就变大。

  

你可能感兴趣的:(OpenGL)