gluLookAt()实质上是不是也是采用的移动场景的方式,是不是视点总是固定在原点,而仅仅移动场景,如果不是,为什么当gluLookAt()的参数发生变化时光源的位置不发生变化。

解决方案 »

  1.   

    gluLookAt()是对把三位坐标从世界坐标系转化到相机坐标系,简单的就是给原坐标乘上一个相机变换矩阵得到一个新坐标(对世界空间的所有点都进行这个程法运算)
      

  2.   

    可以这样理解:gllookat 是移动观察场景的视点的位置,glTranslate()、glscale()、glrotate()是移动场景,所以gllookat移动的方向与大小与glTranslate()、glscale()、glrotate()正好相反,是同一种效果实现的不同方式。有时用gllookat要方便一些,如画好了场景,从不同的角度进行观察时。
      

  3.   

    书上说移动场景和移动视点的效果是一样的,只不过是说法和理解不一样了
    你调整一下glLightfv和gluLookAt的先后调用关系,
      

  4.   

    gluLookAt   是摆放相机在世界坐标系下的位置和姿态的   
      简单的理解:   
            你可以把相机想象成为你自己的脑袋   
            你自己要看到现实世界当中的内容,你需要固定你的脑袋的位置   eye的坐标   
            以及你看向的目标的位置     
            而在固定了这两个内容的情况下,你的头还是可以歪着看是吧   
            所以要确定可见的内容,还需要固定你的头顶的朝向了,这个就是up向量的定义了
    GG..