glsl将球抛到浮球上

glsl将球抛到浮球上,glsl,Glsl,如果一个向量等于另一个向量,我想将float值设置为1.0,如果向量不相等,则设置为0.0 if( v1 == v2 ) floatVal = 1.0 ; else floatVal = 0.0 ; 但这不是“更快”吗?或者只是为了设置 floatVal = (v1 == v2) ; 但它不起作用。您不能隐式(或显式)将float转换为bool吗?有没有办法做到这一点,或者我必须使用if语句分支?您没有尝试过“float(bool)”函数吗 GLSLangSpec.Full.1.20.8

如果一个向量等于另一个向量,我想将
float
值设置为
1.0
,如果向量不相等,则设置为
0.0

if( v1 == v2 )  floatVal = 1.0 ;
else  floatVal = 0.0 ;
但这不是“更快”吗?或者只是为了设置

floatVal = (v1 == v2) ;
但它不起作用。您不能隐式(或显式)将float转换为bool吗?有没有办法做到这一点,或者我必须使用
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

这在GLSL 4.3的同一节中仍然有效,其行为如下:“当使用构造函数将bool转换为任何整数或浮点类型时,false转换为0或0.0,true转换为1或1.0。”