简体   繁体   中英

GLEW Vertex Shader compile error

I recently started working on Vertex and Fragment shaders in GLEW. For some reason I am getting a failed to compile shader error.

The error I am getting is as follow:

Failed to compile vertex shader: Vertex shader failed to compile with the following errors:
ERROR: 0:3 error (#12) Unexpected qualifier.
ERROR: 0:3 error(#132) Syntax error: "position" parse error
ERROR: error(#273) 2 compilation errors. No code generated.

The text document that contain the code for the shader is:

#version 330 core

layout (location = 0) in Vector4 position;

uniform Matrix pr_matrix;
uniform Matrix vw_matrix = Matrix(1, 0);
uniform Matrix ml_matrix = Matrix(1, 0);

void main()
{
    gl_Position = /*pr_matrix **/ position;
}

And the code that compile the shader is:

GLuint Shader::load() {
        GLuint program = glCreateProgram();
        GLuint vertex = glCreateShader(GL_VERTEX_SHADER);
        GLuint fragment = glCreateShader(GL_FRAGMENT_SHADER);

        std::string vertexSourceString = File::read_file(mVertex);
        std::string fragmentSourceString = File::read_file(mFragment);

        const char* vertexSource = vertexSourceString.c_str();
        const char* fragmentSource = fragmentSourceString.c_str();

        glShaderSource(vertex, 1, &vertexSource, NULL);
        glCompileShader(vertex);

        GLint result;
        glGetShaderiv(vertex, GL_COMPILE_STATUS, &result);

        if (result == GL_FALSE) {
            GLint length;
            glGetShaderiv(vertex, GL_INFO_LOG_LENGTH, &length);
            std::vector<char> error(length);
            glGetShaderInfoLog(vertex, length, &length, &error[0]);
            std::cout << "Failed to compile vertex shader: " << &error[0] << std::endl;
            glDeleteShader(vertex);

            return 0;
        }

        glShaderSource(fragment, 1, &fragmentSource, NULL);
        glCompileShader(fragment);
        glGetShaderiv(fragment, GL_COMPILE_STATUS, &result);

        if (result == GL_FALSE) {
            GLint length;
            glGetShaderiv(fragment, GL_INFO_LOG_LENGTH, &length);
            std::vector<char> error(length);
            glGetShaderInfoLog(fragment, length, &length, &error[0]);
            std::cout << "Failed to compile fragment shader: " << &error[0] << std::endl;
            glDeleteShader(fragment);

            return 0;
        }

        glAttachShader(program, vertex);
        glAttachShader(program, fragment);
        glLinkProgram(program);
        glValidateProgram(program);
        glDeleteShader(vertex);
        glDeleteShader(fragment);

        return program;

}

I think something is wrong with the vertex, if anyone can help I will appreciate it. Thanks.

The strings Vertex4 and Matrix have no meaning for GLSL. Types in GLSL are things like vec4 and mat4

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM