2011-04-07 4 views
0
void display(void) 

{ 

    char text1[10],text2[10]; 
    int i; 
    glPointSize(2.0); 
    glClear(GL_COLOR_BUFFER_BIT); 
     circle_draw(x1center,y1center,radius1); 
     y1center-=5; 
     while(y1center>=100) 
     { 
      glutPostRedisplay(); 
      y1center-=5; 
     } 
     glFlush(); 

} 

세로 축을 따라 원을 이동하고 싶습니다. 그러나 glutPostRedisplay() 함수를 사용하는 동안 원의 처음과 마지막 위치 만 볼 수 있습니다. 전환이 너무 빨라서 볼 수 없습니다.OpenGL에서 glutPostRedisplay() 함수를 사용하는 동안 어떻게 지연을 도입합니까?

답변

2
void display(void) 
{ 
    char text1[10],text2[10]; 
    int i; 
    glPointSize(2.0); 
    glClear(GL_COLOR_BUFFER_BIT); 
    circle_draw(x1center,y1center,radius1); 
    glFlush(); 
} 

void update(int) { 
    if (y1center > 100) { 
     y1center -= 5; 
     glutPostRedisplay(); 
     glutTimerFunc(100, update, 0); 
    } 
} 

int main() { 
// ... 

    glutTimerFunc(100, update, 0); 

// ... 
} 
+0

571은 C : \ 데브 - CPP \는 \ GL \ glut.h 너무 적은 인수가'무효 glutTimerFunc (서명 INT, 무효 (*) (int)를, int)를 ' –

+0

를 작동하려면 나는 업데이트 프로토 타입을 변경 포함 갱신을 무효화 (int); 그리고 glutTimerFunc (100, update, 100) 함수 콜백; 하지만 여전히 원하는 결과를 얻지 못합니다. –

+0

죄송합니다. 사용 해본 지 오래되었습니다. 'update' 안에'glutTimerFunc'에 또 다른 호출을 추가해야합니다. 업데이트 된 코드보기 ... –

관련 문제