Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nvidia驱动程序更新后,无法在Qt 5.3上编译GLSL着色器_Qt_Opengl - Fatal编程技术网

Nvidia驱动程序更新后,无法在Qt 5.3上编译GLSL着色器

Nvidia驱动程序更新后,无法在Qt 5.3上编译GLSL着色器,qt,opengl,Qt,Opengl,我有一些非常基本的openGL着色器,用于编译,但在Nvidia驱动程序更新后不再编译。 每个着色器都从以下行开始: #版本150核心 我曾经使用QGLShaderProgram::addShaderFromSourceFile方法编译这些着色器 文档()中提到,为了重用,在着色器的开头添加了以下预处理器指令 #define highp #define mediump #define lowp 但是,由于驱动程序更新,我有一个编译错误: error C0204: version direct

我有一些非常基本的openGL着色器,用于编译,但在Nvidia驱动程序更新后不再编译。 每个着色器都从以下行开始: #版本150核心

我曾经使用QGLShaderProgram::addShaderFromSourceFile方法编译这些着色器

文档()中提到,为了重用,在着色器的开头添加了以下预处理器指令

#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指令之前的注释,这似乎确实有效。谢谢你的帮助!