Ubuntu20.04+Qt6.4.2运行Qt3D基础图形示例时图形管线构建失败
问题:Qt3D基础图形示例运行报错分析
环境与报错情况
- 系统:Ubuntu 20.04
- Qt版本:6.4.2
- 运行示例:Qt3D基础图形(Basic Shapes)
运行时出现以下错误:
Qt3D.Renderer.RHI.Backend: Initializing RHI with OpenGL backend No GLSL shader code found (versions tried: QList(130, 120) ) in baked shader QShader(stage=0 shaders=QList(ShaderKey(1 Version(300 QFlags()) 0)) desc.isValid=true) No GLSL shader code found (versions tried: QList(130, 120) ) in baked shader QShader(stage=4 shaders=QList(ShaderKey(1 Version(300 QFlags()) 0)) desc.isValid=true) No GLSL shader code found (versions tried: QList(130, 120) ) in baked shader QShader(stage=0 shaders=QList(ShaderKey(1 Version(300 QFlags()) 0)) desc.isValid=true) Qt3D.Renderer.RHI.Backend: Failed to build graphics pipeline: Creation Failed
补充硬件与OpenGL版本信息
执行命令 glxinfo -B 输出如下:
显示名称: :0 显示: :0 屏幕: 0 直接渲染: 是 扩展渲染器信息 (GLX_MESA_query_renderer): 厂商: Intel Open Source Technology Center (0x8086) 设备: Mesa DRI Intel(R) HD Graphics 4000 (IVB GT2) (0x166) 版本: 21.2.6 硬件加速: 是 显存: 1536MB 统一内存: 是 首选配置文件: core (0x1) 核心配置文件最高版本: 4.2 兼容配置文件最高版本: 3.0 GLES1配置文件最高版本: 1.1 GLES[23]配置文件最高版本: 3.0 OpenGL厂商字符串: Intel Open Source Technology Center OpenGL渲染器字符串: Mesa DRI Intel(R) HD Graphics 4000 (IVB GT2) OpenGL核心配置文件版本字符串: 4.2 (Core Profile) Mesa 21.2.6 OpenGL核心配置文件着色器语言版本字符串: 4.20 OpenGL核心配置文件上下文标志: (无) OpenGL核心配置文件配置文件掩码: core profile OpenGL版本字符串: 3.0 Mesa 21.2.6 OpenGL着色器语言版本字符串: 1.30 OpenGL上下文标志: (无) OpenGL ES配置文件版本字符串: OpenGL ES 3.0 Mesa 21.2.6 OpenGL ES配置文件着色器语言版本字符串: OpenGL ES GLSL ES 3.00
错误含义解析
- 核心问题:Qt3D的RHI渲染后端初始化OpenGL时,无法找到匹配版本的GLSL着色器代码,最终导致图形渲染管线创建失败。
- 细节拆解:
- 日志显示,系统尝试加载GLSL 130、120版本的着色器,但示例程序的烘焙着色器要求的是GLSL 300版本(对应OpenGL 3.3核心规范),版本不匹配导致找不到对应代码。
- 从硬件信息来看,你的Intel HD Graphics 4000支持OpenGL核心配置文件4.2(对应GLSL 420),但默认兼容模式下仅支持OpenGL 3.0(GLSL 130)。
- Qt 6.4.2的Qt3D默认可能没有启用OpenGL核心配置文件,而是使用了兼容模式,导致示例中为高版本GLSL编写的着色器无法被正确加载,进而触发报错。
内容的提问来源于stack exchange,提问作者e.n.shirokov
相关产品推荐
相关产品推荐

