2011-12-14 45 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)