66 Builder() : linked_(
false) { programId_ = glCreateProgram(); }
68 Builder &addShaderFromSource(std::string
const &shaderSource,
70 char const *shaderCStr = shaderSource.c_str();
71 GLuint shaderId = glCreateShader(shaderType);
73 GLchar
const *files[] = {PI_shader_preamble, shaderCStr};
74 GLint lengths[] = {(GLint)strlen(PI_shader_preamble),
75 (GLint)strlen(shaderCStr)};
77 glShaderSource(shaderId, 2, files, lengths);
80 glCompileShader(shaderId);
81 glGetShaderiv(shaderId, GL_COMPILE_STATUS, &success);
83 glGetShaderInfoLog(shaderId, INFOLOG_LEN,
nullptr, infoLog);
84 printf(
"ERROR::SHADER::COMPILATION_FAILED\n%s\n", infoLog);
88 glAttachShader(programId_, shaderId);
101 glLinkProgram(programId_);
102 glGetProgramiv(programId_, GL_LINK_STATUS,
104 if (linkSuccess == GL_FALSE) {
105 glGetProgramInfoLog(programId_, INFOLOG_LEN,
nullptr, infoLog);
106 printf(
"ERROR::SHADER::LINK_FAILED\n%s\n", infoLog);
117 glDeleteProgram(programId_);
126 GLchar infoLog[INFOLOG_LEN];