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
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. –
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