Как вращать мой объект со светом в opengl - PullRequest
0 голосов
/ 25 декабря 2011

В моем коде я не могу настроить освещение в соответствии с объектом, поэтому я не могу зафиксировать свое освещение на движущемся объекте.Как я могу переместить свет с объектами

У меня есть объект, который находится в позиции 0,0, -15, и когда я нажимаю вверх, вправо, влево, этот объект движется со светом, который является ягненкомобъект.Тем не менее, хотя я поместил источник света (объект ягненка) в 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 голосов
/ 25 декабря 2011

Важно отметить, что на 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();
...