2

単純な頂点シェーダーのコンパイルで問題が発生しました。私はコンパイルにこの関数を使用しています:

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 '場所': 構文エラー解析エラー

4

0 に答える 0