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