一个十分有趣的问题

      我尝试在第一个程序的基础上添加点东西,在看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上也出现过这个问题,

[Interest] Qt5.5 Qt3D Demos: QOpenGLShader::compile(Vertex): ERROR: 2:1: '' : syntax error: #version is mandatory and should be set before any other token

      

      但是没有人回答。无奈搜索源码,也没有,但这是QOpenGLShader::compile(Vertex):  提示的


你可能感兴趣的:(一个十分有趣的问题)