2017-08-14 57 views
-2

突然之間(儘管我可能錯過了一些自動更新),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監視工具使用的是作品,它確實會增加)。我認爲這排除了由於一些不相關的問題而導致計算能力不足的可能性。

回答

0

OK,我找到了一種方法來解決我的問題在這個谷歌組談話約一個不同的問題,用同樣的方法:https://groups.google.com/forum/#!topic/pyglet-users/7yQ9viOu75Y(在克勞迪奧·卡內帕的答覆建議的修改,即使flip()鏈接的的GDI版本相同的功能,而不是wglSwapLayerBuffers,使事情恢復正常)。

我還不確定爲什麼wglSwapLayerBuffers在我的情況下表現得如此奇怪。我猜像我這樣的問題是GDI版本「推薦」的原因之一。然而,理解爲什麼我的問題甚至可能仍然是好的,如果有人得到了正在發生的事情...並且不得不干涉一個相對可靠和受人尊敬的圖書館來執行其最基本的任務之一感覺真的很髒,必須是一個更明智的解決方案。

相關問題