У меня есть проект, который использует шейдеры GLSL.
Этот проект предназначен для того, чтобы ничего не выводить на стандартный вывод, если что-то идет не так или вы явно не включаете дополнительный вывод отладочной информации.
Когда шейдерная компиляция завершается неудачно, длина журнала, заданная glGetProgramInfoLog
, равна> 0, а иногда, когда она успешно достигает> 0, и вместо этого выдает предупреждения компиляции . Если у вас есть шейдер, который идеально компилирует, длина журнала составляет <1 ... это то, как он работает на моей карте NVidia на моем компьютере разработчика. </p>
За свои грехи я также делаю разработки на ноутбуке с интегрированной видеокартой Intel. Код работает нормально, но всякий раз, когда я делаю шейдерную компиляцию, журнал содержит:
"Шейдер был успешно скомпилирован для работы на оборудовании"
Что очень раздражает, так как у меня теперь нет возможности решить, следует ли мне печатать строку, кроме какого-либо анализа строки, например:
strstr("successfully",log)
Надеюсь, очевидно, почему это нежелательно.
Как, если вообще, я могу определить, стоит ли печатать сообщение с использованием API OpenGL?
EDIT:
Если я использую glGetShaderiv(shaderobj,GL_COMPILE_STATUS,&err);
, тогда я не получаю предупреждения компиляции, только ошибки.