OpenGL переводит, когда это не должно - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть скайбокс и немного воды с эффектом помахивания. Скайбокс и вода движутся вместе с камерой. Это все хорошо, но когда я нажимаю пробел, я хочу, чтобы камера двигалась вверх, но без скайбокса или воды тоже. Скайбокс не двигается, но вода поднимается так же, как и камера, чего я не хочу. Кто-нибудь знает почему?

//Camera
        glRotatef(elevation, 1,0,0);
        glRotatef(heading, 0,1,0);
        glRotatef(rot, 0,0,1);
        glTranslatef(-eyeX,-eyeY,-eyeZ);

        //Skybox
        glPushMatrix();
            glTranslatef(eyeX,0,eyeZ);  
            drawCube();
            drawSea();
        glPopMatrix();

Ни одна из переменных перевода не используется в drawSea().

1 Ответ

1 голос
/ 30 ноября 2011

Ну, для скайбокса не стоит пытаться «компенсировать» камеру. Намного проще сбросить матрицу вида модели на идентичность, а затем просто применить только вращение камеры. Как это происходит, это делается просто путем взятия матрицы вида модели и очистки последнего столбца и последней строки до [0,0,0,1].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...