Pyglet:将事件与框架绘制同步



动画的默认方法是设置一个独立的计时器,以与帧速率相同的频率执行。这不是我想要的,因为它不能保证事件在正确的时间实际执行。与实际帧图缺乏同步导致偶尔的动画抖动。显而易见的解决方案是让一个函数每帧运行一次,但我找不到这样做的方法。on_draw()只在我按下键盘上的键时运行。我可以得到on_draw()每帧运行一次,与帧绘图同步吗?

这样做的方法是使用pyglet.clock.schedule(update),确保vsync是启用的(它是默认的)。这确保on_draw()每帧运行一次。传递给pyglet.clock.schedule()的update函数甚至不需要做任何事情。它可以是空白的。On_draw()现在每绘制一帧执行一次,所以没有必要让两个函数都在每绘制一帧时执行一次。如果在窗口类的某个地方有一个选项说on_draw()应该每秒绘制一次,那就好得多了,但至少它现在正在工作。

我仍然得到糟糕的撕裂,但这是pyglet在我的平台或系统上的一个bug。

最新更新