void ShaderProgram::InitShader(string vertexFile, string fragmentFile) { // Create vertex shader vertexShader = new Shader(GL_VERTEX_SHADER, vertexFile); // Create fragment shader fragmentShader = new Shader(GL_FRAGMENT_SHADER, fragmentFile); /* Shader program*/ programID = glCreateProgram(); /* Attach and link */ glAttachShader(programID, vertexShader->GetShaderID()); glAttachShader(programID, fragmentShader->GetShaderID()); // BIND ATTRib BindAllAttributes(); // LINK and VALIDATE glLinkProgram(programID); glValidateProgram(programID); /* Check for any error */ GLint status; glGetProgramiv(programID, GL_LINK_STATUS, &status); if(status == 0){ GLchar infoLog[512]; glGetProgramInfoLog(programID, 512, NULL, infoLog); std::cout<<"SHADER PROGRAM LINK FAILED\n" <<infoLog<<std::endl; exit(5); } // Get uniform location GetAllUniformLocations(); }
TextShader::TextShader() : ShaderProgram("src/shaders/vert_text.glsl", "src/shaders/frag_text.glsl") { GetAllUniformLocations(); }
TerrainShader::TerrainShader() : ShaderProgram("../res/shaders/terrainShader") { BindAttributes(); GetAllUniformLocations(); }