运行Pygame 3D迷宫程序时遭遇DRI3、libEGL及MESA报错求助
兄弟,我之前折腾Pygame 3D项目的时候也碰过几乎一模一样的报错!这些问题基本都是图形驱动和渲染后端的兼容性搞的鬼,咱们一步步来排查解决:
先给你捋捋报错的大概原因:你的系统图形驱动不支持DRI3(也就是第三代直接渲染架构),导致Pygame依赖的MESA/ZINK渲染组件没法正常创建Vulkan实例,直接卡壳在启动环节了。
下面是几个亲测有效的解决办法,你挨个试试:
强制禁用DRI3,回退到DRI2
这是最快速的临时解决办法,直接通过环境变量让系统绕开DRI3。在终端里这么启动你的迷宫脚本就行:export LIBGL_DRI3_DISABLE=1 && python 你的迷宫脚本名.py
要是用Windows的话,先在命令行里输入set LIBGL_DRI3_DISABLE=1,再运行你的Python脚本。更新图形驱动
老驱动对新渲染接口的支持往往拉胯,这是根源问题。如果是N卡就更到最新官方驱动;A卡或者Intel集成显卡的话,更新一下系统里的MESA驱动包。更新完重启系统,大概率能直接解决这些兼容性报错。切换Pygame的渲染后端
Pygame默认可能用了Vulkan相关的ZINK后端,你可以强制它用OpenGL或者软件渲染后端试试。修改你脚本里的Pygame初始化代码:
比如强制用OpenGL后端:import pygame pygame.display.init() # 用OPENGL和双缓冲模式创建窗口 screen = pygame.display.set_mode((800, 600), pygame.OPENGL | pygame.DOUBLEBUF)要是还是不行,就试试性能差点但兼容性拉满的软件渲染:
import pygame pygame.display.init() screen = pygame.display.set_mode((800, 600), pygame.SOFTWARE)检查系统图形支持状态
先确认下你的系统到底支不支持DRI3。在终端里跑glxinfo | grep "direct rendering"看看直接渲染有没有开启,再跑glxinfo | grep "DRI"查看支持的DRI版本。要是你的显卡确实太老不支持DRI3,那长期用DRI2就行。
内容来源于stack exchange

