当前位置:  开发笔记 > 编程语言 > 正文

在英特尔上编译详细的GLSL Shader

如何解决《在英特尔上编译详细的GLSLShader》经验,为你挑选了1个好方法。

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

除非出现问题或明确打开一些额外的调试输出,否则此项目不会向stdout打印任何内容.

当着色器编译失败时,给定的日志长度glGetProgramInfoLog> 0,有时当它> 0时成功,并给出编译警告.当你有一个完美编译的着色器时,日志长度<1 ...这就是我在开发机器上的NVidia卡上的工作方式.

对于我的罪过,我也在带有intel集成显卡的笔记本电脑上做了一些开发.代码运行正常,但每当我执行着色器编译时,日志包含:

"shader已成功编译为在硬件上运行"

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

strstr("successfully",log)

希望这显然是为什么这是不可取的.如果有的话,我可以判断一条消息是否值得使用OpenGL api打印出来?

编辑:

如果我使用glGetShaderiv(shaderobj,GL_COMPILE_STATUS,&err);那么我没有得到编译警告,只有错误.



1> Jay Kominek..:

干得好:

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

这是您获得的唯一编译状态; 没有任何可移植的方式我发现你确定是否有警告.(编译日志可以包含任何实现关注的内容,包括成功通知.)

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有