2016-05-11 4 views
0

Ich erhalte die folgende Fehlermeldung, wenn ich meine Fragment-Shader verbinden versuchen,QGLShaderProgram OpenGL Shadern

QGLShader :: kompilieren (Fragment): 0 (4): Fehler C0000: Syntaxfehler, unerwartet '' , erwartet "::" bei Token "."

Ich versuche nur, einen einfachen Fragment-Shader zu implementieren, der die Farbe grün setzt.

Der Code für meine Vertex-Shader-Dateinamen (die Arbeit) shader.vert

#version 430 

in layout(location=0) vec2 position; 

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

Der Code für mein Fragment-Shader shader.frag

#version 430 

out vec4 finalColour; 

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

Der Code, der die 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() 
Links

Antwort

1

Der zweite Parameter o f addShaderFromSourceCode (, Code)

Sie den Inhalt der Datei der Name hier nicht die Datei selbst bieten müssen Sie diesen Code in einer Funktion setzen können und es verwenden, um die Datei herunterzuladen

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

+0

Für die laden zweiten Parameter es nach einem Dateinamen fragt, können Sie die Spezifikationen ansehen, [QGLShaderProgram :: addShaderFromSourceFile] (http://doc.qt.io/qt-4.8/qglshaderprogram.html#addShaderFromSourceFile). Auch shader.vert wird geladen. Fragment Shader ist nicht. –

+0

Sie laden den Vertex-Shader aus der Datei und fragmentieren den Shader aus dem Code. Ändern Sie den Namen der Funktion .. von addShaderFromSourceCode zu addShaderFromSourceFile – mofed8461