Создание отражения OpenGL - PullRequest
       0

Создание отражения OpenGL

0 голосов
/ 14 декабря 2011

Я пытаюсь отразить на плоскости XZ вращающийся куб (так что в конечном итоге это проекция 3D в 2D).Однако точки, с которыми мой куб проецируется на плоскость XZ, перекрываются, как и следовало ожидать, из-за того, что куб является трехмерным, и есть точки с одинаковыми значениями X, но разными значениями y (2 точки проецируются на одну и ту же точку).

Мой вопрос: как я могу проецировать только те точки на моем кубе, которые видимы для плоскости, на которую я хочу проецировать?

glLoadIdentity();

        glEnable(GL_DEPTH_TEST);
        glCullFace(GL_BACK);

        glTranslatef(0.0f, 0.0f, -5.0f);

        GLfloat matrix[16] = {1.0, 0.0, 0.0, 0.0, 
                              0.0, 0.0, 0.0, 0.0, 
                              0.0, 0.0, 1.0, 0.0, 
                              0.0, 0.0, 0.0, 1.0};

        glPushMatrix();
            glRotatef(angle, 1.0f, 1.0f, 1.0f);

            glBegin(GL_TRIANGLES);
                DrawCube();     
            glEnd();
        glPopMatrix();

        glPushMatrix();
            glTranslatef(0.0f, -1.0f, 0.0f);
            glMultMatrixf(matrix);
            glRotatef(angle, 1.0f, 1.0f, 1.0f);

            glBegin(GL_TRIANGLES);
                DrawCube();
            glEnd();
        glPopMatrix();

1 Ответ

5 голосов
/ 14 декабря 2011

отражают на плоскости X-Z вращающийся куб (так что в конечном итоге это проекция 3D в 2D).

Отражение - это не единичная проекция (то, что вы называете 3D в 2D). Отражение - это масштабирование -1, в желаемом случае масштабирование равно glScalef(1, -1, 1).

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