Nvidia驱动程序更新后,无法在Qt 5.3上编译GLSL着色器
我有一些非常基本的openGL着色器,用于编译,但在Nvidia驱动程序更新后不再编译。 每个着色器都从以下行开始: #版本150核心 我曾经使用QGLShaderProgram::addShaderFromSourceFile方法编译这些着色器 文档()中提到,为了重用,在着色器的开头添加了以下预处理器指令Nvidia驱动程序更新后,无法在Qt 5.3上编译GLSL着色器,qt,opengl,Qt,Opengl,我有一些非常基本的openGL着色器,用于编译,但在Nvidia驱动程序更新后不再编译。 每个着色器都从以下行开始: #版本150核心 我曾经使用QGLShaderProgram::addShaderFromSourceFile方法编译这些着色器 文档()中提到,为了重用,在着色器的开头添加了以下预处理器指令 #define highp #define mediump #define lowp 但是,由于驱动程序更新,我有一个编译错误: error C0204: version direct
#define highp
#define mediump
#define lowp
但是,由于驱动程序更新,我有一个编译错误:
error C0204: version directive must be first statement and may not be repeated
我的着色器源已经成为
#define highp
#define mediump
#define lowp
#version 150 core
....
因此,这个问题很容易理解,但是修复却不那么容易。
这是一种预防Qt的方法吗?
处理此问题的正确解决方案是什么(如果可能,无需重写所有着色器管理代码)更新后,我遇到了完全相同的问题。 我所做的事情是:
- 删除版本定义之前的所有注释
- 删除版本定义之前的所有空行和空格
- 重建了一切,甚至是您的资源文件
看起来Qt使着色器编译器更加挑剔 这是NVIDIA drivers 347+的Qt 5.3.0、5.3.1、5.3.2、5.4.0、5.4.1和5.4.2的一个bug, 它将固定在Qt5.5中。
请查看链接是否可以添加您正在使用的确切着色器,以及
log()
报告的确切错误日志,以及控制台上打印的任何内容?谢谢大家,可能是重复的。是的,这是您提到的问题的重复。如果我删除#version指令之前的注释,这似乎确实有效。谢谢你的帮助!