我正在使用Qt 5.11.2构建一个OpenGL应用程序。在添加曲面细分着色器时,出现以下错误:
QOpenGLShader::编译(细分控件):0(2):错误C 0204:版本指令必须是第一个语句,并且不能重复
***Problematic Tessellation Control shader source code***
# define lowp
# define mediump
# define highp
# line 1
´╗┐#version 400
# line 1
layout (vertices = 4) out;
我正在使用Geforce GTX 1050/PCIe/SSE 2 GPU运行Windows 10。
我发现了类似的报告,但没有一个答案对我有用:unable to compile GLSL shaders on Qt 5.3 after Nvidia driver update
Serious rendering issues with OpenGL 4.1 and Qt 5
着色器如下所示:
# version 400
layout (vertices = 4) out;
uniform float animationFrame;
in vec3 v_vertex[];
out vec3 tc_vertex[];
void main()
{...}
要添加着色器,我使用以下代码:
addShader(QOpenGLShader::Vertex, "data/cube.vert", *m_program);
addShader(QOpenGLShader::Fragment, "data/cube.frag", *m_program);
addShader(QOpenGLShader::TessellationControl, "data/cube.tcs", *m_program);
addShader(QOpenGLShader::TessellationEvaluation, "data/cube.tes", *m_program);
addShader(QOpenGLShader::Geometry, "data/cube.geom", *m_program);
显然Qt插入的第一行产生了错误。有什么想法如何解决这个问题吗?
2条答案
按热度按时间j2datikz1#
我也有同样的问题,我的错误是这样显示的:
如您所见,消息中有
???
,而您有´╗┐
当我从“带BOM的utf-8”换成“utf-8”时,它起作用了~
uhry853o2#
我有这样的错误:
我使用可视化代码将文件编码从“带BOM的UTF-8”更改为“UTF-8”。然后它就工作了。