68 Builder() : linked_(
false) { programId_ = glCreateProgram(); }
70 Builder &addShaderFromSource(std::string
const &shaderSource,
72 char const *shaderCStr = shaderSource.c_str();
73 GLuint shaderId = glCreateShader(shaderType);
75 GLchar
const *files[] = {PI_shader_preamble, shaderCStr};
76 GLint lengths[] = {(GLint)strlen(PI_shader_preamble),
77 (GLint)strlen(shaderCStr)};
79 glShaderSource(shaderId, 2, files, lengths);
82 glCompileShader(shaderId);
83 glGetShaderiv(shaderId, GL_COMPILE_STATUS, &success);
85 glGetShaderInfoLog(shaderId, INFOLOG_LEN,
nullptr, infoLog);
86 printf(
"ERROR::SHADER::COMPILATION_FAILED\n%s\n", infoLog);
90 glAttachShader(programId_, shaderId);
103 glLinkProgram(programId_);
104 glGetProgramiv(programId_, GL_LINK_STATUS,
106 if (linkSuccess == GL_FALSE) {
107 glGetProgramInfoLog(programId_, INFOLOG_LEN,
nullptr, infoLog);
108 printf(
"ERROR::SHADER::LINK_FAILED\n%s\n", infoLog);
119 glDeleteProgram(programId_);
128 GLchar infoLog[INFOLOG_LEN];