2017-03-07 1 views
-1

내가 키 "E"로하고, 회전을 할 수있는 키보드에 입력Opengl - 이벤트 키보드를 사용하여 축 주위를 정사면체로 회전하는 방법은 무엇입니까?

if ((e != 0) && (e != 180)){ 

    glTranslatef(0.4, 0, 0); 
    glRotatef(e, 0, 0,1); 
    glTranslatef(-0.4, 0, 0); 
    glRotatef(e, 0, 0, 1); 
    glTranslatef(0.4, 1, 0); 

}else{ 

    e = 0 ; 
} 
    glBegin(GL_TRIANGLES); 

    //base left right 
    glColor3f(1, 0, 0); 
    glVertex3f(0.0f, 0.0f, 0.4*sqrt(3)); 
    glVertex3f(-0.4f, -0.4*sqrt(3), 0.47); 
    glVertex3f(0.0f, -0.4*sqrt(3), 0.8*sqrt(3)-(0.14*sqrt(3))); 

    //base left right interna 
    glColor3f(0.0f, 0.0f, 1.0f); 
    glVertex3f(0.0f, 0.0f, 0.4*sqrt(3)); 
    glVertex3f(0.0f, -0.4*sqrt(3), 0.8*sqrt(3)-(0.14*sqrt(3))); 
    glVertex3f(0.4f, -0.4*sqrt(3), 0.47); 

    //bottom 
    glColor3f(1.0f, 1.0f, 0.0f); 
    glVertex3f(0.4f, -0.4*sqrt(3), 0.47); 
    glVertex3f(0.0f, -0.4*sqrt(3), 0.8*sqrt(3)-(0.14*sqrt(3))); 
    glVertex3f(-0.4f, -0.4*sqrt(3), 0.47); 

    glEnd();  
    glPopMatrix(); 

} 

아래에있는 내 코드를 따르십시오. 그러나 회전은 중심을 중심으로 회전하지 않습니다. "e"키를 입력 할 때마다 "e"값이 e + 60으로 증가합니다.

답변

0

glRotatef(e, 0, 0,1); 대신 glRotatef(e, 0, 1, 0); 을 시도 했습니까?

이것이 문제가되지 않으면 문제가 해결되지 않으면 문제의 원인을 자세히 설명해주십시오.

또한 고정 파이프 라인 대신 쉐이더를 사용하는 방법을 배워야합니다.

관련 문제