【问题标题】:Verbose GLSL Shader compile on Intel在 Intel 上编译的详细 GLSL 着色器
【发布时间】:2009-03-16 05:03:37
【问题描述】:

我有一个使用 GLSL 着色器的项目。

此项目旨在不向标准输出打印任何内容,除非出现问题或您明确打开了一些额外的调试输出。

当着色器编译失败时,glGetProgramInfoLog 给出的日志长度>0,有时当它成功时>0,并给出编译警告。当你有一个可以完美编译的着色器时,日志长度是

为了我的罪过,我还在带有英特尔集成显卡的笔记本电脑上进行了一些开发。代码运行良好,但每当我执行着色器编译时,日志都包含:

“着色器已成功编译为在硬件上运行”

这很烦人,因为我现在无法决定是否应该将字符串打印出来,除了某种字符串分析,例如:

strstr("successfully",log)

希望这很明显为什么不受欢迎。 如果有的话,我如何判断一条消息是否值得使用 OpenGL api 打印出来?

编辑:

如果我使用glGetShaderiv(shaderobj,GL_COMPILE_STATUS,&err);,那么我不会收到编译警告,只会收到错误。

【问题讨论】:

    标签: opengl shader glsl


    【解决方案1】:

    给你:

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

    这是您获得的唯一编译状态;我没有找到任何便携式方法来确定您是否收到警告。 (编译日志可以包含任何实现需要放入其中的内容,包括成功通知。)

    【讨论】:

    • 那么,您想知道是否有警告或错误,但没有成功消息?抱歉,我很确定编译状态就是全部了。
    • 是的,这正是我想要的。惭愧,我想我必须以凌乱的方式去做。谢谢。
    • @DaedalusFall 所以我认为你的答案被接受了,因为你问这是怎么可能的,而杰伊正确地回答它不是(尽管在评论中)。
    • 公平点,我把它打开,以防有人提出解决方案。我已经接受了答案,但是 Jay,也许您可​​以编辑答案以包含您的评论中的内容?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多