我尝试在第一个程序的基础上添加点东西,在看qt官方blog时有看到可以直接使用QPainter,我就加了一个,填充一个矩形。
编译一切OK,但是运行时提示一大串
"
QOpenGLShader::compile(Vertex): ERROR: 0:1: '' : syntax error: #version is mandatory and should be set before any other token
ERROR: 0:2: '' : syntax error: #version is mandatory and should be set before any other token
ERROR: 0:? : 'pre-mature EOF' : syntax error syntax error
*** Problematic Vertex shader source code ***
#define lowp
#define mediump
#define highp
#line 1
void setPosition();
void main(void)
{
setPosition();
}
attribute highp vec2 vertexCoordsArray;
attribute highp vec3 pmvMatrix1;
attribute highp vec3 pmvMatrix2;
attribute highp vec3 pmvMatrix3;
void setPosition(void)
{
highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3);
vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0);
gl_Position = vec4(transformedPos.xy, 0.0, transformedPos.z);
}
***
Vertex shader for simpleShaderProg (MainVertexShader & PositionOnlyVertexShader) failed to compile
QOpenGLShader::compile(Fragment): ERROR: 0:1: '' : syntax error: #version is mandatory and should be set before any other token
ERROR: 0:2: '' : syntax error: #version is mandatory and should be set before any other token
ERROR: 0:? : 'pre-mature EOF' : syntax error syntax error
*** Problematic Fragment shader source code ***
#define lowp
#define mediump
#define highp
#line 1
lowp vec4 srcPixel();
void main()
{
gl_FragColor = srcPixel();
}
lowp vec4 srcPixel()
{
return vec4(0.98, 0.06, 0.75, 1.0);
}
***
Fragment shader for simpleShaderProg (MainFragmentShader & ShockingPinkSrcFragmentShader) failed to compile
QOpenGLShader::link: "Attached fragment shader is not compiled.\n"
Errors linking simple shader: Attached fragment shader is not compiled.
"
很显然,这就是前篇blog提到的动态LINK。Vertex shader Fragment shader 两个着色器的GNU程序。
我尝试搜索,发现http://lists.qt-project.org/pipermail/interest/2015-July/018300.html
有人在QT5.3上也出现过这个问题,
但是没有人回答。无奈搜索源码,也没有,但这是QOpenGLShader::compile(Vertex): 提示的