Exemplo n.º 1
0
bool kore::ShaderProgram::checkProgramLinkStatus(const GLuint programHandle,
                                                 const std::string& name) {
  GLint success;
  glGetProgramiv(programHandle, GL_LINK_STATUS, &success);

  int infologLen = 0;
  glGetProgramiv(programHandle, GL_INFO_LOG_LENGTH, &infologLen);
  if (infologLen > 1) {
    GLchar * infoLog = new GLchar[infologLen];
    if (infoLog == NULL) {
      kore::Log::getInstance()->write(
        "[ERROR] Could not allocate ShaderInfoLog buffer from '%s'\n",
        name.c_str());
    }
    int charsWritten = 0;
    glGetProgramInfoLog(programHandle, infologLen, &charsWritten, infoLog);
    std::string shaderlog = infoLog;
    kore::Log::getInstance()->write(
      "[DEBUG] '%s' program Log %s\n", name.c_str(), shaderlog.c_str());
    KORE_SAFE_DELETE_ARR(infoLog);
  } else {
    /*kore::Log::getInstance()->write(
      "[DEBUG] Program '%s' linked\n", name.c_str());*/
  }

  return success == GL_TRUE;
}
Exemplo n.º 2
0
bool kore::Shader::checkShaderCompileStatus(const GLuint shaderHandle,
                                                   const std::string& name) {
  GLint success;
  GLint infologLen;
  glGetShaderiv(shaderHandle, GL_COMPILE_STATUS, &success);
  glGetShaderiv(shaderHandle, GL_INFO_LOG_LENGTH, &infologLen);
  
  if (infologLen > 1) {
    GLchar * infoLog = new GLchar[infologLen];
    if (infoLog == NULL) {
      kore::Log::getInstance()->write(
        "[ERROR] Could not allocate ShaderInfoLog buffer from '%s'\n",
        name.c_str());
    }
    int charsWritten = 0;
    glGetShaderInfoLog(shaderHandle, infologLen, &charsWritten, infoLog);
    std::string shaderlog = infoLog;
    kore::Log::getInstance()->write(
      "[DEBUG] '%s' shader Log %s\n", name.c_str(), shaderlog.c_str());
    KORE_SAFE_DELETE_ARR(infoLog);
  } else {
    kore::Log::getInstance()->write(
      "[DEBUG] Shader '%s' compiled\n", name.c_str());
  }
  return success == GL_TRUE;
}