float变量不以任何方式进行比较

时间:2014-06-03 08:41:12

标签: opengl floating-point glsl

我正在glsl片段着色器中做一些事情,并得到一些奇怪的结果。我用于计算的代码现在不应该真正相关,但对于某种“调试”,我会根据变量所在的范围显示颜色。

编码为: (影子是浮动的)

if(shadow == 0.0f)
{
    vFragColor = vec4(1.0f, 0.0f, 0.0f, 0.0f);
}
else if(shadow == 1.0f)
{
    vFragColor = vec4(0.0f, 1.0f, 0.0f, 0.0f);
}
else if(shadow < 1.0f && shadow > 0.0f)
{
    vFragColor = vec4(0.0f, 0.0f, 1.0f, 0.0f);
}
else if(shadow < 0.0f)
{
    vFragColor = vec4(1.0f, 0.0f, 1.0f, 0.0f);
}
else if(shadow > 1.0f)
{
    vFragColor = vec4(0.0f, 1.0f, 1.0f, 0.0f);
}
else
{
    vFragColor = vec4(1.0f, 1.0f, 1.0f, 0.0f);
}

根据我的理解,不应该在最后输入“else”,因为代码在检查任何可能的值之前。 但是,对于我得到一些奇怪结果的区域,我想做那种“调试”,代码进入“else”语句。

有人知道这会怎么样吗?我根本不明白这一点......

1 个答案:

答案 0 :(得分:6)

花车也可以是#34;不是数字&#34;