我想设置一个float
值1.0
是否一个向量等于另一个,0.0
如果向量不相等
if( v1 == v2 ) floatVal = 1.0 ;
else floatVal = 0.0 ;
但它不是“更快”还是只是设置的优化
floatVal = (v1 == v2) ;
但它不起作用。您不能隐式(或显式)将浮点数转换为布尔值?有没有办法做到这一点,还是我必须使用if
语句分支?
我想设置一个float
值1.0
是否一个向量等于另一个,0.0
如果向量不相等
if( v1 == v2 ) floatVal = 1.0 ;
else floatVal = 0.0 ;
但它不是“更快”还是只是设置的优化
floatVal = (v1 == v2) ;
但它不起作用。您不能隐式(或显式)将浮点数转换为布尔值?有没有办法做到这一点,还是我必须使用if
语句分支?
你没试过“float(bool)”函数吗?
GLSLangSpec.Full.1.20.8.pdf 第 5.4.1 节说您可以进行所有这些转换。
CuriousChettai 是对的。写吧:
floatVal = float(v1 == v2);
如果您分配的值可能会丢失精度,则 GLSL 会给您一个编译错误。因此,您可以执行以下操作:
float f = 3; // works
int i = 3.0; // compiler-error
int j = int(3.0); // works