У меня есть проект, который использует шейдеры GLSL.Verbose GLSL Shader компилируется на Intel
Этот проект предназначен для того, чтобы ничего не печатать в stdout, если что-то не так, или вы явно включите дополнительный вывод отладки.
Когда шейдер компиляция завершается длина журнала дается glGetProgramInfoLog
> 0, а иногда, когда он преуспевает ИТС> 0, и дает компилировать предупреждения вместо этого. Когда у вас есть шейдер, который отлично компилируется, длина журнала равна < 1 ... вот как это работает на моей карте NVidia на моей машине dev.
Для моих грехов я также делаю некоторые разработчики на ноутбуке с интегрированной графической картой Intel. Код работает нормально, но всякий раз, когда я делаю затенение компилировать журнал содержит:
«шейдер был успешно скомпилирован для работы на оборудовании»
Что очень раздражает, как я теперь нет никакого способа, чтобы решить, должен ли я вывести строку из, кроме какого-то анализа строки, например:
strstr("successfully",log)
Надеюсь, его очевидное, почему это нежелательно. Как, если вообще, могу ли я сказать, стоит ли печатать сообщение с помощью OpenGL api?
EDIT:
Если я использую glGetShaderiv(shaderobj,GL_COMPILE_STATUS,&err);
тогда я не получаю компиляции предупреждений, только ошибки.
Спасибо за ответ, отредактированный мной. – DaedalusFall
Итак, вы хотите знать, есть ли предупреждения или ошибки, но не успешные сообщения? Извините, я уверен, что статус компиляции - это все. –
Да, это именно то, что я хочу. Позор, я думаю, мне придется делать это грязно. Спасибо. – DaedalusFall