如果一个向量等于另一个向量,我想将float
值设置为1.0
,如果向量不相等,我想将0.0
设置为<{p}}
if( v1 == v2 ) floatVal = 1.0 ;
else floatVal = 0.0 ;
但是设置
不是“更快”或优化floatVal = (v1 == v2) ;
但它不起作用。你不能隐式(或明确地)将float转换为bool?有没有办法做到这一点,还是我必须使用if
语句分支?
答案 0 :(得分:11)
你没试过“浮动(布尔)”功能吗?
GLSLangSpec.Full.1.20.8.pdf第5.4.1节说你可以做所有这些转换。
感谢。
答案 1 :(得分:5)
CuriousChettai是对的。只需写下:
floatVal = float(v1 == v2);
如果您指定的值可能会导致精度损失,则GLSL会给您一个编译错误。所以你可以做以下事情:
float f = 3; // works
int i = 3.0; // compiler-error
int j = int(3.0); // works