如何限制pyglet中的FPS? (window on_draw 事件)

How to limit FPS in pyglet? (window on_draw event)

我的 pyglet 应用程序运行良好,但我觉得我获得的 FPS 过高并且只是不必要的 CPU 用法满足我的需要。我得到的 FPS 似乎在 200-2000 之间,而我实际上只需要大约 60。

在旧版本的 pyglet 中有一个名为 set_fps 的函数,所有现有的在线帮助似乎都指向我无法使用的这个已弃用的函数。

pyglet 文档现在说要限制内容,您应该使用 pyglet.clock.schedule_interval 函数,我已经将其用于我的 update 方法以允许每秒调用 60 次:pyglet.clock.schedule_interval(update, 1 / 60.0)。这行得通。但是我需要以某种方式为我的 window 的 on_draw 事件做同样的事情。安排这似乎不可能。

有人知道如何在 pyglet 中限制 FPS 吗?

我的代码与 pyglet 文档中的 example game 没有太大区别。

window = pyglet.window.Window()

@window.event
def on_draw():  # <----- how to limit how often this is called?
    # ... perform ordinary window drawing operations ...

编辑:

经过一段时间的摸索,我找到了一个解决方案,也许,但不确定这是否是正确的方法:

def draw_everything(dt):
    # draw stuff here

@window.event
def on_draw():
    draw_everything(None)

pyglet.clock.schedule_interval(draw_everything, 1/60)

看来正确的做法是这样的:

def draw_everything(dt):
# draw stuff here

@window.event
def on_draw():
    draw_everything(None)

pyglet.clock.schedule_interval(draw_everything, 1/60)