SDL_Delay在每个操作之前都不会延迟

时间:2011-11-05 19:58:47

标签: c++ sdl delay

我编写的程序在每个绘制的圆圈之间有一个延迟,但是当我把SDL_Delay(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;
}

1 个答案:

答案 0 :(得分:2)

事情是在每个draw_circle之后你实际需要更新屏幕。几乎所有图形引擎中的绘制函数都写入缓冲区,在你告诉它们之前不要更新屏幕!

我不知道这对于不使用OpenGL的SDL是如何工作的,但是使用双缓冲OpenGL窗口你应该写SDL_GL_SwapBuffers()然后在它之后,开始清理屏幕等,就像你正在绘制重新筛选!

如果是单个缓冲区窗口,则应刷新缓冲区以更新屏幕。我从来没有使用过SDL(没有OpenGL)所以我不知道函数名称,但是有了这个提示,你知道为什么你的代码不起作用,你应该能够从SDL文档中找到你需要的函数。