Я делаю класс шейдера, у которого есть метод, возвращающий журналы шейдера:
std::string Shader::GetShaderInfoLog(){
GLint TotalLenght=0;
GetShaderiv(GL_INFO_LOG_LENGTH,&TotalLenght);
std::string logs;
logs.reserve(TotalLenght);
glGetShaderInfoLog(name, TotalLenght, NULL, &logs[0] );
return logs;
}
По странной причине строка журналов пуста даже с шейдером, у которого есть ошибка компиляции. Я пробовал с массивом символов:
std::string Shader::GetShaderInfoLog(){
GLint TotalLenght=0;
GetShaderiv(GL_INFO_LOG_LENGTH,&TotalLenght);
char logs[TotalLenght];
glGetShaderInfoLog(name, TotalLenght, NULL, logs);
return std::string(logs);
}
И этот хорошо работает. Итак, мой вопрос: почему это не работает со строкой?