QGLShaderProgram OpenGL 着色器

QGLShaderProgram OpenGL shaders

当我尝试 link 我的片段着色器

时出现以下错误

QGLShader::compile(Fragment): 0(4) : error C0000: syntax error, unexpected '.', expecting "::" at token "."

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

我的顶点着色器(正在运行)文件名的代码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);
}

linkQGLShaderProgram 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()

addShaderFromSourceCode(,code)的第二个参数

您必须提供文件的内容而不是文件本身的名称 在这里你可以把这段代码放在一个函数中并用它来加载文件

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