【问题标题】:How to limit FPS in pyglet? (window on_draw event)如何限制pyglet中的FPS? (窗口 on_draw 事件)
【发布时间】:2020-07-11 18:23:54
【问题描述】:

我的 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)。这行得通。但是我需要以某种方式为我的窗口的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)

【问题讨论】:

  • 这是正确的做法:)
  • @Torxed 这不会每秒调用draw_everything 60 次并且每当窗口调用on_draw 时?

标签: python frame-rate pyglet


【解决方案1】:

似乎正确的做法是这样的:

def draw_everything(dt):
# draw stuff here

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    相关资源
    最近更新 更多