创建反射Opengl

use*_*725 0 c++ opengl

我试图在XZ平面上反射一个旋转的立方体(所以最终这是一个3D到2D的投影).但是,我的立方体投影到XZ平面上的点重叠,正如预期的那样,由于立方体是3D并且存在具有相同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();
Run Code Online (Sandbox Code Playgroud)

dat*_*olf 5

在XZ平面上反射一个旋转的立方体(所以最终这是一个3D到2D的投影).

反射不是单一投影(你称之为3D到2D).反射是-1的缩放,在您希望的情况下缩放是glScalef(1, -1, 1).