QOpenGLShaderProgram::addShaderFromSourceFile导入异常 原创
1、QOpenGLShaderProgram::addShaderFromSourceFile导入异常
- 在qt中使用
addShaderFromSourceFile
导入shader文件如下
m_shaderProgram.addShaderFromSourceFile(QOpenGLShader::Vertex,":/VertexShader.vsh"); // 顶点着色器
m_shaderProgram.addShaderFromSourceFile(QOpenGLShader::Fragment,":/FragmentShader.fsh"); // 像素着色器
m_shaderProgram.link();
- 如果出现下列异常异常信息,则导致异常的原因基本是编码问题,由于utf-8 bom会在每一个文件前自动添加
\xEF\xBB\xBF
,这就导致了读取内容无法识别。
QOpenGLShader::compile(Fragment): Fragment shader failed to compile with the following errors:
ERROR: error(#60) Unknown char: "???"
ERROR: error(#273) 1 compilation errors. No code generated
*** Problematic Fragment shader source code ***
#ifdef GL_KHR_blend_equation_advanced
#extension GL_ARB_fragment_coord_conventions : enable
#extension GL_KHR_blend_equation_advanced : enable
#endif
#define lowp
#define mediump
#define highp
#line 1
???#version 330 core
out vec4 FragColor;
void main()
{
FragColor = vec4(0.5, 0.5, 0.2, 1.0);
};
***
-
解决办法
-
工具->选项->文本编辑器->Behavior
-
将文本编码中 UTF-8 BOM由“如果编码是UTF-8则添加”改为 “总是删除”,然后保存就可以了。
-