Question

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;
}
Was it helpful?

Solution

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;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top