4

だから私はいくつかの変数がfloat2にあり、いくつかがdouble2にあるopenCLプログラムを持っています。そして、これらの変数をアップキャストまたはダウンキャストしたいのですが、その方法がわかりません。通常のfloatとdoubleの場合と同じように明示的にキャストしようとしましたが、機能しませんでした。

float2 a,b;
double2 c,d;

a = (float2)(c+d); //didnt work
a = float2(c+d);  //didnt work

「float2」と「double2」のタイプがわからないのかもしれませんが、正しく動作させるためにキャストする方法を教えてもらえますか?

前もって感謝します。

4

1 に答える 1

4

floatn型とdoublen型のファミリーは、値のベクトルを表します(この場合、2つのメンバーがあります)。Cスタイルの変換はそれらでは機能しません。

次のようなベクトルに対して機能する変換関数のファミリーがあります。

convert_float2(vec2)

ただし、ここのドキュメントを読むと、 double2から/への変換はサポートされていないようです。これにより、変換を手動で実行するオプションが残ります。

a.x = float(c.x + d.x);
a.y = float(c.y + d.y);
于 2012-08-30T21:38:20.230 に答える