2011-12-14 81 views
0

我试图在X-Z平面上反射旋转的立方体(因此最终这是3D到2D投影)。然而,由于立方体是3D并且存在具有相同X值但是具有不同y值的点(将2个点投影到相同点上),所以我的立方体投影到XZ平面上的点重叠)。创建反射Opengl

我的问题是,我如何只投影我想投影到飞机上可见的立方体上的点?

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(); 

回答

5

反射到X-Z平面中的旋转的立方体(因此最终这是一个3D到2D投影)。

反射不是一个单独的投影(你称之为3D到2D)。反射是-1的缩放比例,在您所需的情况下,缩放比例为glScalef(1, -1, 1)