2016-05-11 191 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