在与上次相同的游戏中,我遇到了一个新问题。当我移动鼠标时,FPS 从 60 左右增加到 500 以上。我知道你在想什么;这不是因为on_draw()
每个事件都被解雇(我认为),因为我已经覆盖了pyglet.app.EventLoop.idle
:
class EventLoop:
def idle(self):
pyglet.clock.tick(poll=True)
return pyglet.clock.get_sleep_time(sleep_idle=True)
pyglet.app.EventLoop = EventLoop()
我也在我的绘图功能中调用flip()
窗口。所有无用的鼠标运动事件都占用了大量的 CPU,这很烦人。我能做些什么呢?
编辑
我添加window.invalid = False
到我的绘图功能和window.invalid = True
我的更新功能,这似乎减少了其他鼠标操作的 CPU 使用率。
编辑 2
绘图功能是一个典型的on_draw()
功能。
编辑 3
经过更多调查,似乎所有这些事件都没有像我想象的那样占用那么多 CPU。仍然很高兴知道这是否是 Pyglet 应该采取的行动方式,或者是否应该避免这种方式。