ZBLOG

ERROR::SHADER::COMPILATION_FAILED 0:2(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.00 ES, and 3.00 ES ERROR::SHADER::COMPILATION_FAILED 0:2(10): error: GLSL 3.30 is not supported. Supported versions ar...

这个错误表明你的 OpenGL 驱动不支持你所请求的 GLSL 版本(在本例中是 3.30)。要解决此问题,可以尝试以下几个步骤:

1. 检查当前 OpenGL 和 GLSL 支持的版本

使用 glxinfo 命令检查你的系统支持的 OpenGL 和 GLSL 版本:

glxinfo | grep "OpenGL"

确保你看到的信息中列出了较高的 OpenGL 版本。如果未显示,那么可能需要更新图形驱动。

2. 更新图形驱动

如果你的 GPU 是 NVIDIA 或 AMD,建议安装最新的官方驱动。

  • NVIDIA 用户

    • 可以通过以下命令自动安装推荐的驱动:
    sudo ubuntu-drivers autoinstall
    
    • 或者可以手动选择和安装某个特定版本的 NVIDIA 驱动。
  • AMD 用户

    • 通常使用开源 Mesa 驱动,如果需要更高性能,可以考虑安装 AMD 的官方驱动,参见 AMD 官网 寻找适合你显卡型号的驱动。

3. 调整着色器代码中的 GLSL 版本

如果更新驱动后仍然遇到问题,你可以将着色器中的 GLSL 版本号调整为受支持的最低版本。例如,将顶点着色器和片段着色器中的版本从 #version 330 core 更改为 #version 120 或者 #version 140(根据你的支持情况)。

// 将以下内容修改为你实际支持的最低 GLSTL 版本
#version 120 // 或者更低(1.10, 1.20)

示例修改后的代码

修改后的顶点和片段着色器示例如下:

// 顶点着色器源码
const char* vertexShaderSource = R"(
#version 120
attribute vec3 position; // 注意:对于旧版,使用 attribute 替代 in。
void main() {
    gl_Position = vec4(position, 1.0);
}
)";

// 片段着色器源码
const char* fragmentShaderSource = R"(
#version 120
void main() {
    gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); // 渲染绿色,对于旧版,使用 gl_FragColor。
}
)";

总结

通过确认你的 OpenGL 环境、更新图形驱动程序以及调整 GLSL 着色器代码中的版本号,你应该能够解决编译失败的问题。希望这些步骤对你有所帮助!如果还有其他问题,请随时问我。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=6601

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?