CGAL 5.3三角剖分绘制示例运行报错 出现GLSL着色器编译问题
CGAL 5.3 三角剖分示例GLSL着色器报错解决方法
问题根因
报错核心为GLSL语法版本不兼容:in/out关键字是GLSL 1.30及以上版本的特性,CGAL 5.3迭代时更新了自带演示组件的着色器代码,弃用了GLSL 1.10版本的attribute/varying关键字,而Ubuntu 20.04默认的OpenGL兼容性上下文默认使用GLSL 1.10,因此着色器编译失败,弹出的窗口无渲染内容。
解决方案
按操作复杂度从低到高排序:
方案1:临时指定OpenGL核心模式运行(无需改代码、无需重新编译)
运行程序时添加环境变量强制Qt使用核心模式OpenGL即可,命令如下:
QT_OPENGL=core ./draw_triangulation_2
方案2:修改示例代码显式指定OpenGL版本
如果方案1不生效,可修改示例代码全局指定OpenGL版本:
- 打开
draw_triangulation_2.cpp,在头文件引入区域添加:
#include <QSurfaceFormat>
- 在
main函数最开头(创建Qt应用实例之前)添加如下代码:
QSurfaceFormat format; format.setVersion(3, 3); format.setProfile(QSurfaceFormat::CoreProfile); QSurfaceFormat::setDefaultFormat(format);
- 重新执行
make draw_triangulation_2编译后直接运行即可。
方案3:升级显卡驱动
如果使用NVIDIA/AMD独立显卡,安装对应厂商的闭源官方驱动,默认支持更高版本的GLSL,无需额外配置即可正常运行。
验证方法
可执行如下命令查看当前系统支持的GLSL版本:
glxinfo | grep "GLSL version"
输出包含3.30及以上版本即说明核心模式可用。
内容的提问来源于stack exchange,提问作者HEKTO
相关产品推荐
相关产品推荐

