5

あるベクトルが別のベクトルと等しい場合、およびベクトルが等しくない場合にfloat値を設定したい1.00.0

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

しかし、設定するだけで「高速」または最適化ではないでしょうか

floatVal = (v1 == v2) ;

しかし、それは機能しません。floatをboolに暗黙的に(または明示的に)変換することはできませんか?これを行う方法はありますか、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 に答える