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

Box2D Testbed运行报错:GLSL 3.30不支持,如何解决?

修复Box2D Testbed运行时GLSL版本不兼容错误

先看你贴出的错误日志:

Error compiling shader of type 35633! 0:1(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES
Error compiling shader of type 35632! 0:1(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES
Testbed:/home/amrit/Box2D/Box2D/Testbed/Framework/DebugDraw.cpp:176: GLuint sCreateShaderProgram(const char*, const char*): Assertion `vsId != 0 && fsId != 0' failed.
[1] 14679 abort (core dumped)

问题根源很明确:Testbed默认使用GLSL 3.30版本,但你的显卡驱动只支持到GLSL 1.30或OpenGL ES系列版本,导致着色器编译失败触发断言崩溃。下面是几个可行的修复方案:

方案1:修改着色器版本为硬件支持的版本

这是最直接的解决办法,把Testbed的着色器代码从3.30降级到你支持的版本:

  • 打开Box2D/Testbed/Framework/DebugDraw.cpp文件
  • 找到顶点着色器和片段着色器的字符串定义(一般在文件开头或sCreateShaderProgram函数内部)
  • 把着色器第一行的#version 330 core改成#version 130(如果130不行,就选错误日志里列出的最高支持版本,比如1.20)
  • 重新编译Testbed,运行即可

方案2:更新显卡驱动

如果你的硬件本身应该支持GLSL 3.30(比如较新的NVIDIA/AMD/Intel显卡),那大概率是驱动版本太旧:

  • NVIDIA显卡:终端运行 sudo apt update && sudo apt install nvidia-driver-535(替换为适配你显卡的驱动版本,比如525、545等)
  • AMD显卡:安装官方驱动包,运行 sudo apt install amdgpu-install 后按提示完成配置
  • Intel集成显卡:更新Mesa驱动,运行 sudo apt update && sudo apt install mesa-vulkan-drivers mesa-utils

更新驱动后重启系统,再运行Testbed测试。

方案3:编译时启用OpenGL ES支持

如果你的设备是嵌入式平台或老旧硬件,更适合用OpenGL ES版本:

  • 进入Box2D的编译目录(比如build文件夹)
  • 重新执行CMake并添加参数:cmake -DBOX2D_TESTBED_USE_OPENGL_ES=ON ..
  • 重新编译:make -j$(nproc)
  • 运行Testbed,此时会使用GLSL ES 3.00,刚好在你支持的版本列表内

我之前碰到老硬件兼容问题时,方案1或方案3用起来最省心,你可以根据自己的设备情况选一个试试。

内容的提问来源于stack exchange,提问作者Amrit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:24:41