You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyglet加载纹理/精灵时遇ContextException错误求解决

解决Pyglet中“Unable to share contexts”错误的方法

问题场景

调用pyglet.image.load().get_texture()或pyglet.sprite.Sprite()时,触发pyglet.gl.ContextException: Unable to share contexts错误,相关代码示例:

使用get_texture的代码

welcome_logo = pyglet.image.load('./assets/images/welcome.png').get_texture()

使用Sprite的代码

welcome_logo = pyglet.image.load('./assets/images/welcome.png')
welcome_logo = pyglet.sprite.Sprite(welcome_logo)
welcome_logo.scale = 0.5

报错回溯信息

Traceback (most recent call last):
  File "main.py", line 35, in <module>
    main()
  File "main.py", line 29, in main
    window = Window(width=1200, height=750, caption='Pygros', resizable=False)
  File "D:\code\Pygros\main.py", line 14, in __init__
    super(Window, self).__init__(*args, **kwargs)
  File "C:\Users\chen\.virtualenvs\vv_310\lib\site-packages\pyglet\window\win32\__init__.py", line 104, in __init__
    super(Win32Window, self).__init__(*args, **kwargs)
  File "C:\Users\chen\.virtualenvs\vv_310\lib\site-packages\pyglet\window\__init__.py", line 578, in __init__
    self._create()
  File "C:\Users\chen\.virtualenvs\vv_310\lib\site-packages\pyglet\window\win32\__init__.py", line 258, in _create
    self.context.attach(self.canvas)
  File "C:\Users\chen\.virtualenvs\vv_310\lib\site-packages\pyglet\gl\win32.py", line 255, in attach
    super(Win32ARBContext, self).attach(canvas)
  File "C:\Users\chen\.virtualenvs\vv_310\lib\site-packages\pyglet\gl\win32.py", line 202, in attach
    raise gl.ContextException('Unable to share contexts.')

解决方法

  • 调整代码执行顺序:Pyglet的纹理依赖GL上下文,必须先创建窗口实例,再加载图片生成纹理或创建精灵。示例:

    # 先创建窗口
    window = pyglet.window.Window(width=1200, height=750, caption='Pygros', resizable=False)
    # 再处理图片和精灵
    welcome_logo = pyglet.image.load('./assets/images/welcome.png')
    welcome_logo_sprite = pyglet.sprite.Sprite(welcome_logo)
    welcome_logo_sprite.scale = 0.5
    
  • 禁用上下文共享:创建窗口时添加context_share=False参数,强制关闭上下文共享机制:

    window = pyglet.window.Window(width=1200, height=750, caption='Pygros', resizable=False, context_share=False)
    
  • 更新显卡驱动:重置Windows后显卡驱动可能回退,尤其是Iris核显,去Intel官网下载对应型号的最新驱动覆盖安装。

  • 降级Pyglet版本:新版本可能存在兼容性问题,尝试安装稳定旧版本:

    pip install pyglet==1.5.27
    
  • 重建虚拟环境依赖:卸载现有pyglet后重新安装,确保依赖完整:

    pip uninstall pyglet -y
    pip install pyglet
    

内容的提问来源于stack exchange,提问作者大傻逼

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 04:48:41