无法编译简单的顶点着色器

时间:2013-02-28 14:27:55

标签: c++ opengl shader vertex-shader

我在编译简单的顶点着色器时遇到了问题。我正在使用此函数进行编译:

GLuint TShaderManager::loadShaderFromFile(const std::string& fName, GLenum shaderType)
{
    string path = fName;

    //Open file 
    GLuint shaderID = 0; 
    string shaderString; 
    ifstream sourceFile(path.c_str()); 

    //Source file loaded 
    if(sourceFile) 
    { 
        shaderString.assign(istreambuf_iterator<char>(sourceFile), 
                            istreambuf_iterator<char>());                                           // Get shader source

        shaderID = glCreateShader(shaderType);                                                      // Create shader ID 

        const GLchar* shaderSource = shaderString.c_str(); 
        glShaderSource(shaderID, 1, (const GLchar**)&shaderSource, NULL);                           // Set shader source 

        glCompileShader(shaderID);                                                              // Compile shader source 

        GLint shaderCompiled = GL_FALSE; 
        glGetShaderiv(shaderID, GL_COMPILE_STATUS, &shaderCompiled);                                //Check shader for errors 
        if(shaderCompiled != GL_TRUE) 
        { 
            TError::showMessage("Failed to compile shader"); // I'm getting this error 
            glDeleteShader(shaderID); 
            shaderID = 0; 
        } 
    } 
    else 
    { 
        TError::showMessage(string("Unable to open file ").append(path.c_str())); 
    } 

    return shaderID;
}

这是我的顶点着色器,无法编译:

#version 330

layout(location = 0) in vec4 position;
void main()
{
    gl_Position = position;
}

基本上shaderCompiled仍为GL_FALSE

我在调试模式下检查过 - 着色器在我的函数中正确加载为string,因此问题不存在。

此外,我不知道是否有必要,但我也在这里放置了正确编译的片段着色器:

#version 330

out vec4 outputColor;
void main()
{
    float lerpValue = gl_FragCoord.y / 800.0f;

    outputColor = mix(vec4(1.0f, 1.0f, 1.0f, 1.0f),
                      vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpValue);
}

修改

glGetShaderInfoLog显示以下消息:

  

错误:0:3'位置':语法错误解析错误

0 个答案:

没有答案