我正在使用pyglet进行基本的仿真,我需要重新运行它并进行多次可视化。模拟将调整镜头的焦点“ f”,直到到达所需位置为止(请参见此处https://imgur.com/Ui06B1c的gif)。我已经将模拟的实例放在for循环内,并在其中也运行了pyglet.app.run()循环,以便可以重置模拟并运行10集。
num_episodes=10
for i in range(num_episodes):
update_rate=1/59
simulation=PivotPointSimulation()
pyglet.clock.schedule_interval(update, update_rate)
pyglet.app.run()
我需要创建“模拟”的实例,以便可以由pyglet.app.run()
调用draw和update方法。通过在每个循环中创建一个新实例,我还可以在模拟再次开始时重置变量。当镜头的焦点“ f”通过pyglet.app.exit()
到达所需位置时,我终止仿真。
问题是每次for循环迭代时,我的pyglet应用程序的帧速率都会加快(例如,请参见gif https://imgur.com/Ui06B1c)。我检查了update_rate是否正在更改,并且保持不变。足够特别的是,当我使用spyders的“停止”按钮停止代码,并再次以“播放”方式运行模拟时,每次按下“停止并播放”时,模拟的帧率也会越来越快。
我想知道是否有一种方法可以正确终止应用程序,以便每次再次运行时将其完全重置?我不确定pyglet.app.exit()
是否已正确重置所有内容。但是我不确定应用程序如何加速,因为pyglet.clock.schedule_interval(update, update_rate)
应该以恒定的更新速率进行更新。
我曾尝试使用Vsync设置(从false
设置为true
),但并没有帮助。我也尝试使用pyglet.clock.set_fps_limit(60)
无济于事。所以我不确定这是怎么回事。
以前有人遇到过这个问题吗?
我正在使用pyglet进行基本的仿真,我需要重新运行它并进行多次可视化。模拟会调整镜头的焦点“ f”,直到到达所需位置为止(请参见此处的gif ...
每次调用pyglet.clock.schedule_interval(update, update_rate)
时,都会添加要以该速率调用的回调。