我想成立一個float
值1.0
如果一個矢量等於彼此,0.0
如果向量不等於GLSL投布爾浮動
if(v1 == v2) floatVal = 1.0 ;
else floatVal = 0.0 ;
但它不會是「更快」或優化只是爲了設置
floatVal = (v1 == v2) ;
但它不起作用。你不能隱式(或明確地)將float轉換爲bool?有沒有辦法做到這一點,或者我必須使用if
語句分支?
我想成立一個float
值1.0
如果一個矢量等於彼此,0.0
如果向量不等於GLSL投布爾浮動
if(v1 == v2) floatVal = 1.0 ;
else floatVal = 0.0 ;
但它不會是「更快」或優化只是爲了設置
floatVal = (v1 == v2) ;
但它不起作用。你不能隱式(或明確地)將float轉換爲bool?有沒有辦法做到這一點,或者我必須使用if
語句分支?
你沒嘗試「浮動(布爾)」功能?
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,同樣的部分有效,行爲如下:「當一個構造函數用於一個布爾值轉換爲任何 整數或浮點數類型,假的是轉換爲0或0.0,並將true轉換爲1或1.0。「 – Vandroiy