Pyglet应用程序帧速率似乎在每次重新启动时都加快了速度

问题描述 投票:0回答:1

我正在使用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 ...

python simulation frame-rate pyglet
1个回答
0
投票

每次调用pyglet.clock.schedule_interval(update, update_rate)时,都会添加要以该速率调用的回调。

© www.soinside.com 2019 - 2024. All rights reserved.