C++ SDL#U延迟不';不要在每次行动之前拖延

C++ SDL#U延迟不';不要在每次行动之前拖延,c++,sdl,delay,C++,Sdl,Delay,我写了一个程序,在每个画的圆之间都有一个延迟,但是当我把SDL_延迟(2)放在例子中时,所有的东西都是黑色的,大约5秒钟,然后我看到所有的东西都已经画出来了,但是我需要从一开始就看到所有的东西,这样看起来就像一个动画 这是我的密码: 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.00

我写了一个程序,在每个画的圆之间都有一个延迟,但是当我把SDL_延迟(2)放在例子中时,所有的东西都是黑色的,大约5秒钟,然后我看到所有的东西都已经画出来了,但是我需要从一开始就看到所有的东西,这样看起来就像一个动画

这是我的密码:

 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;
}

while(t事情是在每次
draw\u circle
之后,你实际上必须更新屏幕。几乎所有图形引擎中的draw函数都会写入缓冲区,除非你告诉他们,否则不要更新屏幕

我不知道不使用OpenGL的SDL是如何工作的,但是对于双缓冲区OpenGL窗口,您应该编写
SDL\u GL\u SwapBuffers()
,然后在它之后,开始清除屏幕等,就像重新绘制屏幕一样


如果是单个缓冲区窗口,则应刷新缓冲区以更新屏幕。我从未单独使用过SDL(没有OpenGL),因此我不知道函数名称,但有了此提示,您就知道了代码不起作用的原因,并且您应该能够从SDL文档中找到所需的函数。

完整性:函数是SDL\u Flip()带和SDL_update(),不带双缓冲区。