GLSL Syntax error: "in" parse error

4.1k Views Asked by At

I'm trying to use shaders in my program but i'm getting very strange error...

Vertex shader failed to compile with the following error
ERROR: 0:6: error(#132) Syntax error: "in" parse error
ERROR: error(#273) 1 compilation errors.  No code generated

I thought the problem was with file reading, but after trying many ways of that it's still not working.

So here is my code:

bool ShaderProgram::LoadShaderFile(const char* shader_path, GLuint& shader_id)
{
    ifstream oFileStream(shader_path);
    if(oFileStream)
    {
        // Load shader code
        string sShaderSource;
        sShaderSource.assign((istreambuf_iterator<char> (oFileStream) ), istreambuf_iterator<char> () );

        // Forward shader code to OGL
        const GLchar* chShaderSource = sShaderSource.c_str() + '\0';
        printf("%s", chShaderSource);
        glShaderSource(shader_id, 1, (const GLchar**) &chShaderSource, NULL);


        return true;
    }
    else
        return false;

}

And my shaders:

// shader.vs
// Vertex Shader
#version 330

in vec3 vVertex
in vec3 vColor

smooth out vec4 vVaryingColor;

void main()
{
    vVaryingColor = vec4(vColor, 1.0);
    gl_Position = vec4(vVertex, 1.0);
}


// shader.fs
// Fragment Shader
#version 330

smooth in vec4 vVeryingColor;
out vec4 vVaryingColor;

void main()
{
    vFragColor = vVaryingColor;
}
1

There are 1 best solutions below

3
On BEST ANSWER

You are missing the semicolons at the end of the in lines.

You have:

in vec3 vVertex
in vec3 vColor

You should have:

in vec3 vVertex;
in vec3 vColor;