2
Uint32 prev = SDL_GetTicks();
while (true)
{
Draw();
Uint32 now = SDL_GetTicks();
Uint32 delta = now - prev;
printf("%u\n" , delta);
Update(delta/1000.0f);
prev = now;
ProcessEvents();
}
该应用程序是一个简单的移动正方形。我的循环看起来像这样,当vsync在整个事情上运行得非常顺利;关闭它会导致动画的某种跳跃。我已经插入了一些版画,这里就是我发现:断断续续SDL + OpenGL的动画时VSYNC是
[...] 16 15 16 66 # 2 # 0 # 0 # 16 16 21 [...]
我知道有与这种循环的几个问题,但他们都不适用于这个简单的例子(我错了?)。什么导致了这种行为,我该如何克服它?
我在Linux系统上使用ATI卡,但我期待一个便携式解释/解决方案。
打开或专有驱动程序? – genpfault 2011-06-03 14:52:31
专有的,它似乎只发生在我自己的应用程序中。 – cYrus 2011-06-03 14:53:54
SDL 1.2或1.3? (Draw)()执行'glFinish()/ glFlush()'和/或'SDL_GL_SwapBuffers()'吗? – genpfault 2011-06-03 14:57:08