0

在我的代码中,我无法根据对象设置照明坐标,因此我无法将照明固定在移动的对象上。我怎样才能用物体移动灯光

我有一个位于 0,0,-15 位置的对象,当我按下左上右下按钮时,这个对象随着作为羔羊对象的光而移动。然而,虽然我将 light(lamb object) 放置在 0,0,-15 位置并将 move_x 和 move_z 坐标作为 light 的位置,但灯光出现在不同的位置,并且与我的对象没有链接。这是我的代码:

            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();
4

1 回答 1

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();
于 2011-12-25T18:09:17.273 回答