突然之间(尽管我可能错过了一些自动更新),flip()
方法pyglet在我的电脑上慢了约100倍(我的脚本从大约20到0.2 FPS,分析表明,flip()
是责怪)。Pyglet在Windows上交换前后缓冲区的方法(`flip()`,用于OpenGL的wglSwapLayerBuffers的包装)可能是100倍太慢
我不完全理解这一点,但由于我的操作系统是Windows 10,该方法似乎只是一种在python中运行wglSwapLayerBuffers
OpenGL双缓冲循环的方式。其他一切似乎都有正常的速度,包括使用OpenGL的程序。这是以前发生的,并在重新启动后自行修复,所以当时我没有真正考虑它。
现在,重新启动不会改变任何东西。我更新了我的GPU驱动程序,我尝试禁用vsync,我查找可能使用大量内存和/或GPU内存的无关进程。我重新安装了pyglet的最新稳定版本。
现在我不知道如何甚至开始排除此...
下面是我打印0.2秒,而不是20多岁的小例子。
from pyglet.gl import *
def timing(dt):
print(1/dt)
game_window = pyglet.window.Window(1,1)
if __name__ == '__main__':
pyglet.clock.schedule_interval(timing, 1/20.0)
pyglet.app.run()
(在pyglet.app.run()
,分析表明我它是flip()
方法,它基本上所有的时间)。我使用pyglet显示经常更新的图像,但不会增加GPU的使用(我还检查了随机程序(即Minecraft)的效果,以确保GPU监视工具使用的是作品,它确实会增加)。我认为这排除了由于一些不相关的问题而导致计算能力不足的可能性。