РЕДАКТИРОВАТЬ: уточнение. Я не проверяю, не прошла ли компиляция, я просто ищу logs . Я проверяю 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]:
Кажется, шейдер работает нормально, и игра играет без проблем.
Я просто думаю, что это может быть какое-то предупреждение, о котором мне может быть полезно знать.