QGLShaderProgram OpenGL着色器

时间:2016-05-11 21:32:04

标签: c++ qt opengl shader fragment-shader

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

  

QGLShader :: compile(Fragment):0(4):error 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 个答案:

答案 0 :(得分:1)

addShaderFromSourceCode的第二个参数(,代码)

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

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