5

我想设置一个float1.0是否一个向量等于另一个,0.0如果向量不相等

if( v1 == v2 )  floatVal = 1.0 ;
else  floatVal = 0.0 ;

但它不是“更快”还是只是设置的优化

floatVal = (v1 == v2) ;

但它不起作用。您不能隐式(或显式)将浮点数转换为布尔值?有没有办法做到这一点,还是我必须使用if语句分支?

4

2 回答 2

17

你没试过“float(bool)”函数吗?

GLSLangSpec.Full.1.20.8.pdf 第 5.4.1 节说您可以进行所有这些转换。

于 2012-12-03T08:43:47.900 回答
5

CuriousChettai 是对的。写吧:

floatVal = float(v1 == v2);

如果您分配的值可能会丢失精度,则 GLSL 会给您一个编译错误。因此,您可以执行以下操作:

float f = 3;       // works
int i = 3.0;       // compiler-error
int j = int(3.0);  // works
于 2012-12-06T15:15:41.223 回答