Pyglet 应用程序帧率似乎在每次重新启动时都会加快
Pyglet application framerate appears to speed up each time it is restarted
我正在 pyglet 中进行基本模拟,我需要重新 运行 并多次可视化。模拟会调整镜头的焦点 "f",直到它到达所需的位置(参见此处的 gif https://imgur.com/Ui06B1c)。我在 for 循环中放置了一个模拟实例,并在其中放置了一个 pyglet.app.run() 循环 运行ning,这样它就可以重置并 运行 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()
我需要创建 "simulation" 的实例,以便 pyglet.app.run()
可以调用绘制和更新方法。通过在每个循环中创建一个新实例,我还可以在模拟再次开始时重置变量。当镜头的焦点 "f" 到达所需位置 pyglet.app.exit()
.
时,我终止模拟
问题是每次 for 循环迭代时,我的 pyglet 应用程序的帧速率都会加快(例如参见 gif https://imgur.com/Ui06B1c)。我已经检查了 update_rate 是否正在改变并且它保持不变。非常特别的是,当我使用 spyders 停止按钮停止代码,并使用 "play" 再次 运行 模拟时,每次我点击停止并播放时,模拟的帧率也会变得越来越快。
我想知道是否有一种方法可以正确终止应用程序,以便每次 运行s 再次完全重置?我不确定 pyglet.app.exit()
是否正确重置了所有内容。但我不确定应用程序是如何加速的,因为 pyglet.clock.schedule_interval(update, update_rate)
应该以恒定的更新速率更新。
我试过 Vsync 设置(设置从 false
到 true
)但没有帮助。我也试过使用 pyglet.clock.set_fps_limit(60)
无济于事。所以我不确定这里发生了什么。
有没有人遇到过这个问题?
每次调用pyglet.clock.schedule_interval(update, update_rate)
,都会按速率添加回调。
因此在 10 次循环结束时,您安排了相同的回调十次。
防止这种情况的一种方法是在之前取消安排函数,这样它就不会被安排第二次:
num_episodes=10
for i in range(num_episodes):
update_rate=1/59
simulation=PivotPointSimulation()
pyglet.clock.unschedule(update)
pyglet.clock.schedule_interval(update, update_rate)
pyglet.app.run()
我正在 pyglet 中进行基本模拟,我需要重新 运行 并多次可视化。模拟会调整镜头的焦点 "f",直到它到达所需的位置(参见此处的 gif https://imgur.com/Ui06B1c)。我在 for 循环中放置了一个模拟实例,并在其中放置了一个 pyglet.app.run() 循环 运行ning,这样它就可以重置并 运行 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()
我需要创建 "simulation" 的实例,以便 pyglet.app.run()
可以调用绘制和更新方法。通过在每个循环中创建一个新实例,我还可以在模拟再次开始时重置变量。当镜头的焦点 "f" 到达所需位置 pyglet.app.exit()
.
问题是每次 for 循环迭代时,我的 pyglet 应用程序的帧速率都会加快(例如参见 gif https://imgur.com/Ui06B1c)。我已经检查了 update_rate 是否正在改变并且它保持不变。非常特别的是,当我使用 spyders 停止按钮停止代码,并使用 "play" 再次 运行 模拟时,每次我点击停止并播放时,模拟的帧率也会变得越来越快。
我想知道是否有一种方法可以正确终止应用程序,以便每次 运行s 再次完全重置?我不确定 pyglet.app.exit()
是否正确重置了所有内容。但我不确定应用程序是如何加速的,因为 pyglet.clock.schedule_interval(update, update_rate)
应该以恒定的更新速率更新。
我试过 Vsync 设置(设置从 false
到 true
)但没有帮助。我也试过使用 pyglet.clock.set_fps_limit(60)
无济于事。所以我不确定这里发生了什么。
有没有人遇到过这个问题?
每次调用pyglet.clock.schedule_interval(update, update_rate)
,都会按速率添加回调。
因此在 10 次循环结束时,您安排了相同的回调十次。
防止这种情况的一种方法是在之前取消安排函数,这样它就不会被安排第二次:
num_episodes=10
for i in range(num_episodes):
update_rate=1/59
simulation=PivotPointSimulation()
pyglet.clock.unschedule(update)
pyglet.clock.schedule_interval(update, update_rate)
pyglet.app.run()