2011-10-31 3 views
1

다음 코드는 OpenGL에서 미로 또는 미로를 그렸습니다. 그 결과 2D 미로가되었습니다. 지금해야 할 일은이 쿼드 대신에 큐브를 그리는 것입니다. 어떻게 할 수 있습니까?쿼드 대신에 큐브를 그리는 방법?

function drawmaze() { 
    int x,y,dl; 
    glNewList(dl=glGenLists(1),GL_COMPILE); 
    glPushAttrib(GL_TEXTURE_BIT | GL_LIGHTING_BIT); 
    glDisable(GL_LIGHTING); 
    glDisable(GL_TEXTURE_2D); 
    glColor3f(1.0f,1.0f,1.0f); 

    glBegin(GL_QUADS); 
// glPushMatrix(); 
    float i = 0; 
    for(y=0;y < mazedata.size();y++) { 
     for(x=0;x < mazedata[y].size();x++) { 
      bool dibujar = false; 
      if(wall(x,y)) {    
       glColor3ub(46,151,208); 
       drawable = true;     
      }      
      else 
      if (entry(x,y)) { 
       glColor3f(0.0f,0.184f,0.792f); 
       drawable = true; 
      } 
      else 
      if (mazexit(x,y)) { 
       glColor3f(0.811f,0.188f,0.176f); 
       drawable = true; 
      } 
      else 
      if (thing(x,y)) { 
       glColor3ub(151, 204, 0); 
       drawable = true; 
      } 
      else 
      if (visited(x,y)) { 
       glColor3ub(66, 66, 66); 
       drawable = true; 
      } 

      if (drawable) { 
       //glPushMatrix(); 
       /* 
           This is a try 
           glTranslatef(1.0,0., 0.0f); 

        glutSolidCube(0.5);*/ 
       //glPopMatrix(); 
       glVertex3f(x+0.0f ,y+0.0f ,0.0f); 
       glVertex3f(x+0.0f ,y+1.0f ,0.0f); 
       glVertex3f(x+1.0f ,y+1.0f ,0.0f); 
       glVertex3f(x+1.0f ,y+0.0f ,0.0f); 
       // topside: 
       glVertex3f(x+0.0f ,y+0.0f ,1.0f); 
       glVertex3f(x+1.0f ,y+0.0f ,1.0f); 
       glVertex3f(x+1.0f ,y+1.0f ,1.0f); 
       glVertex3f(x+0.0f ,y+1.0f ,1.0f); 
      } 

     } 
     i++; 
    } 
    glEnd(); 
// glPopMatrix(); 
    glPopAttrib(); 
    glEndList(); 
    return(dl); 
} 
+2

흠? 모르겠다. 1 대신 6 개의 쿼드를 6 번 사용해보고 어떤 일이 발생하는지 확인하십시오. –

답변

7
glBegin(GL_QUADS); 
    // front 
    glVertex3f(0.0f, 0.0f, 0.0f); 
    glVertex3f(1.0f, 0.0f, 0.0f); 
    glVertex3f(1.0f, 1.0f, 0.0f); 
    glVertex3f(0.0f, 1.0f, 0.0f); 
    // back 
    glVertex3f(0.0f, 0.0f, -1.0f); 
    glVertex3f(1.0f, 0.0f, -1.0f); 
    glVertex3f(1.0f, 1.0f, -1.0f); 
    glVertex3f(0.0f, 1.0f, -1.0f); 
    // right 
    glVertex3f(1.0f, 0.0f, 0.0f); 
    glVertex3f(1.0f, 0.0f, -1.0f); 
    glVertex3f(1.0f, 1.0f, -1.0f); 
    glVertex3f(1.0f, 1.0f, 0.0f); 
    // left 
    glVertex3f(0.0f, 0.0f, 0.0f); 
    glVertex3f(0.0f, 0.0f, -1.0f); 
    glVertex3f(0.0f, 1.0f, -1.0f); 
    glVertex3f(0.0f, 1.0f, 0.0f); 
    // top 
    glVertex3f(0.0f, 1.0f, 0.0f); 
    glVertex3f(1.0f, 1.0f, 0.0f); 
    glVertex3f(1.0f, 1.0f, -1.0f); 
    glVertex3f(0.0f, 1.0f, -1.0f); 
    // bottom 
    glVertex3f(0.0f, 0.0f, 0.0f); 
    glVertex3f(1.0f, 0.0f, 0.0f); 
    glVertex3f(1.0f, 0.0f, -1.0f); 
    glVertex3f(0.0f, 0.0f, -1.0f); 
glEnd(); 
6

큐브를 그리는 기본 OpenGL 메서드가 없습니다.

그래서 큐브를 그리려면 6 개의 쿼드를 그려야합니다.

관련 문제