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