我编写的程序在每个绘制的圆圈之间有一个延迟,但是当我把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;
}
答案 0 :(得分:2)
事情是在每个draw_circle
之后你实际需要更新屏幕。几乎所有图形引擎中的绘制函数都写入缓冲区,在你告诉它们之前不要更新屏幕!
我不知道这对于不使用OpenGL的SDL是如何工作的,但是使用双缓冲OpenGL窗口你应该写SDL_GL_SwapBuffers()
然后在它之后,开始清理屏幕等,就像你正在绘制重新筛选!
如果是单个缓冲区窗口,则应刷新缓冲区以更新屏幕。我从来没有使用过SDL(没有OpenGL)所以我不知道函数名称,但是有了这个提示,你知道为什么你的代码不起作用,你应该能够从SDL文档中找到你需要的函数。