我有一些非常基本的 openGL 着色器,用于编译,但在 Nvidia 驱动程序更新后不再编译。
每个着色器都以以下行开头:
#版本150核心
....
我曾经使用 QGLShaderProgram::addShaderFromSourceFile 方法编译这些着色器
它在文档中提到(http://doc.qt.digia.com/qt-5.1/qtgui/qopenglshaderprogram.html#writing-portable-shaders http://doc.qt.digia.com/qt-5.1/qtgui/qopenglshaderprogram.html#writing-portable-shaders)出于可重用性的目的,在着色器的开头添加以下预处理器指令
#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 拥有 #define 的方法吗?
处理这个问题的正确解决方案是什么(如果可能的话,无需重写我所有的着色器管理代码)
更新后我遇到了完全相同的问题。
我所做的事情是:
- 删除版本定义之前的所有注释。
- 删除版本定义之前的所有空行和空格。
- 重建所有内容,甚至是您的资源文件。
看起来 Qt 让着色器编译器变得更加挑剔!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)