SDL_Delay不会在每次操作之前延迟

SDL_Delay doesn't delay before each action

本文关键字:操作 延迟 Delay SDL      更新时间:2023-10-16

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

在每个draw_circle之后,您实际上必须更新屏幕。几乎所有图形引擎中的绘制函数都写入缓冲区,除非你告诉它们,否则不会更新屏幕!

我不知道这是如何与不使用OpenGL的SDL一起工作的,但是有了双缓冲区OpenGL窗口,你应该写SDL_GL_SwapBuffers(),然后在它之后,开始清除屏幕等,就好像你正在重新绘制屏幕一样!

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