2011-11-05 19 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你確實有更新屏幕之後。在幾乎所有的圖形引擎中繪製函數都會寫入緩衝區,並且不會更新屏幕,直到您告訴它們!

我不知道這是如何與SDL不使用OpenGL的,但與雙緩衝OpenGL窗口,你應該寫SDL_GL_SwapBuffers(),然後開始清除屏幕等,如果你正在重新繪製屏幕!

如果是單個緩衝窗口,應該用刷新緩衝區來更新屏幕。我從來沒有單獨使用SDL(沒有OpenGL),所以我不知道函數名稱,但是通過此提示,您可以知道代碼無法工作的原因,並且您應該能夠從SDL文檔中找到所需的函數。

+1

完整性:函數是SDL_Flip()和SDL_UpdateRect(),沒有雙緩衝。 – jrok