2009-03-16 6 views
2

У меня есть проект, который использует шейдеры 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); тогда я не получаю компиляции предупреждений, только ошибки.

ответ

6

Здесь вы идете:

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

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

+0

Спасибо за ответ, отредактированный мной. – DaedalusFall

+0

Итак, вы хотите знать, есть ли предупреждения или ошибки, но не успешные сообщения? Извините, я уверен, что статус компиляции - это все. –

+0

Да, это именно то, что я хочу. Позор, я думаю, мне придется делать это грязно. Спасибо. – DaedalusFall

 Смежные вопросы

  • Нет связанных вопросов^_^