如何限制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)
我的 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)