static bool CompileShader(GLuint *shader, GLenum type, const File &file) { GLint status; std::string sourceStr = file.GetContents(); // std::cout << sourceStr << std::endl; assert(sourceStr.size()); //Failed to load vertex shader const GLchar *source = (GLchar *)sourceStr.c_str(); *shader = glCreateShader(type); glShaderSource(*shader, 1, &source, NULL); glCompileShader(*shader); #if defined(DEBUG) GLint logLength; glGetShaderiv(*shader, GL_INFO_LOG_LENGTH, &logLength); if (logLength > 0) { GLchar *log = (GLchar *)malloc(logLength); glGetShaderInfoLog(*shader, logLength, &logLength, log); std::cout << "Shader compile log:\n" << log << std::endl; free(log); } #endif glGetShaderiv(*shader, GL_COMPILE_STATUS, &status); if (status == 0) { glDeleteShader(*shader); return false; } return true; }