gluPerspective()跟gluLookAt()的理解

来源:互联网 发布:金庸群侠传2秘籍数据 编辑:程序博客网 时间:2024/04/30 10:57

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

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

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

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

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

                                          

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

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

     



    


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

  

原创粉丝点击