РЕДАКТИРОВАТЬ: уточнение. Я не проверяю, произошла ли ошибка компиляции, я просто ищу журналы. Я проверяю COMPILE_STATUS позже в коде. (См. GLint isCompiled
, который не используется в этой части.)
Почему это возвращает 1, а должно быть 0?
glGetShaderiv(compiled, GL_INFO_LOG_LENGTH, &infoLogLength);
GLuint compiled = glCreateShader(shader->Type);
GLchar const *shader_source = code.c_str();
GLint const shader_length = code.size();
glCheck(glShaderSource(compiled, 1, &shader_source, &shader_length));
glCheck(glCompileShader(compiled));
GLint isCompiled = 0;
char msg[512];
// Check if everything went ok
glGetShaderiv(compiled, GL_COMPILE_STATUS, &isCompiled);
// Getting information about the compile
GLsizei infoLogLength = 0;
glGetShaderiv(compiled, GL_INFO_LOG_LENGTH, &infoLogLength);
if (infoLogLength > 0)
{
glGetShaderInfoLog(compiled, 512, &infoLogLength, msg);
printf("Shader [%s:%s] error when compiling[%d]: \n%s", shader->Name.c_str(), GetShaderTypeAsString(shader->Type).c_str(), infoLogLength, msg);
}
Выход:
Shader [dust_particle_VS.glsl:Vertex Sader] error when compiling[1]:
Шейдер вроде работает нормально и игра идет без проблем. Я просто думаю, что это может быть какое-то предупреждение, о котором мне было бы полезно знать.
if(isCompiled)
. 08.07.2019