我试图在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)
在XZ平面上反射一个旋转的立方体(所以最终这是一个3D到2D的投影).
反射不是单一投影(你称之为3D到2D).反射是-1的缩放,在您希望的情况下缩放是glScalef(1, -1, 1).