我一直在尝试创建一个环境,并希望尽可能快地运行它(如果可能的话,1000+ FPS)。我尝试尝试使用pyglet,似乎我不能超过60fps。
我使用以下设置来调用我的更新函数
pyglet.clock.schedule_interval(update, 1.0/120.0)
环境目前只有 1 个精灵,并且没有进行昂贵的计算。仅运行 1000 次迭代的更新方法需要 2 毫秒。
如果我降低 FPS,它似乎可以正常工作,但总是被限制在 60FPS。有什么办法吗?
从pyglet 1.5 迁移:
应用程序事件循环
^^^^^^^^^^^^^^^
在以前的版本中,重新绘制了窗口(和Window.on_draw()
事件 调度),每当调用任何计划函数或调度事件时。 这通常会导致不可预测性和潜在的不稳定帧速率。在 Pyglet 2.0,一个新的interval
参数已添加到pyglet.app.run
。 现在,窗口将始终按此间隔重绘。它默认为 60fps> (1/60), 但可以根据需要设置:
@mywindow.event
def on_draw():
# always called at 120fps
pyglet.app.run(interval=1/120)
其他要记住的事项:
https://pyglet.readthedocs.io/en/latest/programming_guide/time.html
定期事件
您可以按时间间隔计划更新。 这是动画、物理模拟和游戏状态更新的理想选择。
pyglet.clock.schedule_interval(update, 1 / 60.0)
或者,如果要尽可能频繁地调用该函数:
pyglet.clock.schedule(benchmark)
垂直同步
Pyglet 窗口缓冲区交换与显示刷新率同步,因此您可能需要禁用 vsync。 这可以在窗口创建时指定或使用window.set_vsync(False)