如何用opengl中的灯旋转我的对象

时间:2011-12-25 01:54:48

标签: opengl graphics rotation lighting

在我的代码中,我不能根据对象设置坐标照明,所以我无法修复移动对象的光照。如何用物体移动灯光

我有一个位于0,0,-15位置的对象,当我按下向上向下的向右按钮时,此对象随着光对象移动,即lamb对象。然而,虽然我把光(lamb对象)0,0,-15位置并且给move_x和move_z坐标作为光的位置,但是光出现在不同的地方并且它与我的对象无关联。这是我的代码:

            glTranslatef(move_x,0,move_y);
            float l0_pos_temp[] = {move_x   ,-3, move_y  ,1} ;
            glLightfv( GL_LIGHT0, GL_POSITION, l0_pos_temp ) ;
            glTranslatef(0,-3,0);
            Light();
        glPopMatrix();

1 个答案:

答案 0 :(得分:0)

需要注意的一点是,glLightfv()受模型视图矩阵当前状态的影响。那是 在设置灯光位置之前调用glTranslatef(move_x,0,move_y)会将灯光转换为(move_x,0,move_y)。

也许你想要:

        glTranslatef(move_x,0,move_y);
        float l0_pos_temp[] = {0.0f, -3.0f, -15.0f, 1.0f};
        glLightfv( GL_LIGHT0, GL_POSITION, l0_pos_temp );
        glPopMatrix();