2011-11-05 1 views
0

각 그리기 원 사이에 지연이있는 프로그램을 작성했지만, 예를 들어 SDL_Delay (2)를 입력하면 모든 것이 5 초 동안 검은 색으로 표시되고 모든 것이 이미 그려진 것을 볼 수 있지만 나는 그것이 애니메이션처럼 보일 수 있도록 시작부터 모든 것을 볼 필요가있다.각 작업 전에 SDL_Delay가 지연되지 않습니다.

while (t<tk){ 
    l.a = l.a + (l.b - l.a) * t; 
    a=l.a; 
    Circle cir1(a,o); 
    draw_circle(cir1, canvas); 
    SDL_Delay(2); 
    t=t+0.001; 
} 

답변

2

것은 당신이 실제로 화면을 업데이트 할 필요가 각 draw_circle 이후 :

여기 내 코드입니다. 거의 모든 그래픽 엔진의 함수를 버퍼에 작성하고 지시 할 때까지 화면을 업데이트하지 마십시오!

OpenGL을 사용하지 않는 SDL에서 어떻게 작동하는지 모르겠지만 이중 버퍼 OpenGL 창을 사용하면 SDL_GL_SwapBuffers()을 작성해야합니다. 그런 다음 다시 화면을 그리는 것처럼 화면 등을 지우는 것을 시작하십시오!

단일 버퍼 창이면 플러시 화면을 업데이트해야합니다. 필자는 OpenGL을 사용하지 않고 SDL을 사용하지 않았으므로 함수 이름을 모르지만이 힌트를 사용하면 코드가 작동하지 않는 이유를 알고 SDL 문서에서 필요한 함수를 찾을 수 있습니다.

+1

완성을 위해 함수는 더블 버퍼링없이 SDL_Flip() 및 SDL_UpdateRect()입니다. – jrok