【发布时间】:2013-02-24 17:05:06
【问题描述】:
我的问题是片段着色器在英特尔图形芯片上的执行与在英伟达芯片上的执行方式截然不同。 (两个驱动程序都是最新的)
问题似乎是以下代码中的 mod 调用:
float opRep( vec3 p, vec3 c ){
// gl_FragColor = vec4(max(0.0, sign(p.x)), max(sign(p.y), 0.0), max(sign(p.z), 0.0), 1);
vec3 q = mod(p,c)-0.5*c;
gl_FragColor = vec4(max(0.0, sign(q.x)), max(sign(q.y), 0.0), max(sign(q.z), 0.0), 1);
return twistedColumn( q );
}
float distanceFromPoint(vec3 point) {
return opRep(point, vec3(90.5, 0, 98));
}
gl_FragColor 是我的“调试”语句。调试语句打印点的符号,因为我认为 mod 函数在不同的驱动程序上返回不同的符号。
如果我取消注释第一个调试输出,我会得到相同的视觉结果。但是在mod之后,intel图形驱动程序和nvidia版本之间的视觉效果不同,这非常令人困惑。
谁能给我一个提示,为什么我会得到不同的结果...?
【问题讨论】:
-
GLSL 编译中的任何内容以及与英特尔的链接日志?
-
None with intel, next by nvidia: Vertex info ----------- 0(2) : warning C7555: 'attribute' is deprecated, use 'in/out' instead 0(3) : 警告 C7555: 'variing' 已被弃用,使用 'in/out' 代替 Fragment info ------------- 0(267) : 警告 C7533: 全局变量 gl_FragColor 被弃用版本 120 所以没有...