Verbose GLSL Shader компилируется на Intel - PullRequest
2 голосов
/ 16 марта 2009

У меня есть проект, который использует шейдеры GLSL.

Этот проект предназначен для того, чтобы ничего не выводить на стандартный вывод, если что-то идет не так или вы явно не включаете дополнительный вывод отладочной информации.

Когда шейдерная компиляция завершается неудачно, длина журнала, заданная glGetProgramInfoLog, равна> 0, а иногда, когда она успешно достигает> 0, и вместо этого выдает предупреждения компиляции . Если у вас есть шейдер, который идеально компилирует, длина журнала составляет <1 ... это то, как он работает на моей карте NVidia на моем компьютере разработчика. </p>

За свои грехи я также делаю разработки на ноутбуке с интегрированной видеокартой Intel. Код работает нормально, но всякий раз, когда я делаю шейдерную компиляцию, журнал содержит:

"Шейдер был успешно скомпилирован для работы на оборудовании"

Что очень раздражает, так как у меня теперь нет возможности решить, следует ли мне печатать строку, кроме какого-либо анализа строки, например:

strstr("successfully",log)

Надеюсь, очевидно, почему это нежелательно. Как, если вообще, я могу определить, стоит ли печатать сообщение с использованием API OpenGL?

EDIT:

Если я использую glGetShaderiv(shaderobj,GL_COMPILE_STATUS,&err);, тогда я не получаю предупреждения компиляции, только ошибки.

1 Ответ

6 голосов
/ 16 марта 2009

Вот, пожалуйста:

glGetShaderiv(shaderobj,GL_COMPILE_STATUS,&err);
if(!err) { /* now print out the error log */ }

Это единственный статус компиляции, который вы получаете; я не нашел никакого портативного способа определить, есть ли у вас предупреждения. (Журнал компиляции может быть заполнен всем, что требуется для реализации, включая уведомление об успехе.)

...