2013-03-03 2 views
0

OpenGL 2.0에서 눈사람을 만들고 싶습니다. 전체 도형을 회전하고 싶지만 프로그램을 실행할 때마다 작동하지 않습니다.여러 개체 OpenGL에서 회전

glPushMatrix(); 

    //bottom sphere 
    glTranslated(tranX,tranY-2,tranZ); 
    glRotated(rotX,1,0,0); 
    glRotated(rotY,0,1,0); 
    glRotated(rotZ,0,0,1); 
    glScaled(scaX,scaY,scaZ); 

    glColor3f(1.1,.7,.99); 
    glutSolidSphere(1.5,30,30); 

    //middle sphere 
    glTranslated(tranX,tranY+2.3,tranZ+8); 
    glRotated(rotX,1,0,0); 
    glRotated(rotY,0,1,0); 
    glRotated(rotZ,0,0,1); 
    glScaled(scaX,scaY,scaZ); 

    glColor3f(1.1,.7,.99); 
    glutSolidSphere(1.3,30,30); 

    //top sphere 
    glTranslated(tranX,tranY+2,tranZ+10); 
    glRotated(rotX,1,0,0); 
    glRotated(rotY,0,1,0); 
    glRotated(rotZ,0,0,1); 
    glScaled(scaX,scaY,scaZ); 

    glColor3f(1.1,.7,.99); 
    glutSolidSphere(1,30,30); 
glPopMatrix(); 
+1

'작동하지 않는 것'보다 구체적 일 수 있습니까? – icktoofay

+0

대답은 이미 주어졌지만 추천을 추가하고 싶다 : 오래된 고정 함수 파이프 라인을 피하고 glm (http://glm.g-truc.net/)을 사용하여 작은 씬 그래프를 만들 수있다. 엔진. – dinony

답변

0

OpenGL 변환에 대해 알아야 할 점은 개별 좌표가 아닌 현재 좌표계를 수정한다는 것입니다. 예를 들어 glRotated을 호출하면 제공된 축을 중심으로 제공된 각도로 좌표계가 회전하고 행렬을 변경하거나 바꿀 때까지 호출 한 후 렌더링하는 지오메트리의 모든 비트에 영향을줍니다 (glPopMatrix, glLoadMatrix 등 호출) .

예를 들어 눈사람의 각 구체를 회전 시키지만 장면의 모든 개체에 영향을주는 중요한 회전은 없습니다. 일상적인 장면에서 glPushMatrix 콜이 발생한 직후에 전체 장면에 영향을 미치고 자하는 회전을 배치하십시오.