在我的代码中,我不能根据对象设置坐标照明,所以我无法修复移动对象的光照。如何用物体移动灯光
我有一个位于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();
答案 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();