2016-05-11 145 views
0

我收到以下错误,当我尝试链接到我的片段着色器,QGLShaderProgram的OpenGL着色器

QGLShader ::编译(片段):0(4):错误C0000:语法错误,意外 '' ,期待在标记“::”处出现“。”。

我只是想实现一个简单的片段着色器,将颜色设置为绿色。

我的顶点着色器的代码(这是工作的)文件名shader.vert

#version 430 

in layout(location=0) vec2 position; 

void main() 
{ 
    gl_Position = vec4(position, 0.0, 1.0); 
} 

我的片段着色器的代码shader.frag

#version 430 

out vec4 finalColour; 

void main() 
{ 
    finalColour = vec4(0.0, 1.0, 0.0, 1.0); 
} 

链接的QGLShaderProgram mProgram

//Add Shaders 
if (!mProgram.addShaderFromSourceFile(QGLShader::Vertex, "shader.vert")) { 
    error_msg("Vertex shader load failed"); 
} 
if (!mProgram.addShaderFromSourceCode(QGLShader::Fragment, "testShader.frag")) { 
    error_msg("Fragment shader load failed"); 
} 
if (!mProgram.link()) { 
    error_msg("Cannot link shaders"); 
} 
mProgram.bind() 
代码

回答

1

第二个参数o ˚FaddShaderFromSourceCode(代码)

则必须提供文件的内容不是文件本身 这里的名字,你可以把这个代码的函数,用它来加载文件

Read whole ASCII file into C++ std::string

+0

对于第二个参数是要求文件名,你可以看看规范,[QGLShaderProgram :: addShaderFromSourceFile](http://doc.qt.io/qt-4.8/qglshaderprogram.html#addShaderFromSourceFile)。 shader.vert也加载正常。片段着色器不是。 –

+0

您正在从文件 加载顶点着色器和代码中的片段着色器.. 将函数的名称..从addShaderFromSourceCode更改为addShaderFromSourceFile – mofed8461