我的问题是我的片段着色器在我的英特尔图形芯片上和在英伟达芯片上的执行方式非常不同。(两个驱动程序都是最新的)
问题似乎是以下代码中的 mod-call:
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 函数在 diffrenet 驱动程序上返回不同的符号。
如果我取消注释第一个调试输出,我会得到相同的视觉结果。但是在mod之后,intel图形驱动程序和nvidia版本之间的视觉效果不同,这非常令人困惑。
有人可以给我一个提示,为什么我会得到不同的结果......?