将float2转换为double2,反之亦然

时间:2012-08-30 20:03:19

标签: casting opencl

所以我有一个openCL程序,其中一些变量在float2中,一些在double2中。我想向上或向下转换这些变量,但我不知道该怎么做。我尝试明确地将它像我通常为浮动和双重做的那样,但它没有用。

float2 a,b;
double2 c,d;

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

也许我不理解“float2”和“double2”类型,有人可以告诉我如何投射它们以便正常工作吗?

提前致谢。

1 个答案:

答案 0 :(得分:4)

floatn和doublen类型系列表示值的向量(在您的情况下,它们有2个成员)。 C风格的转换不适用于它们。

有一系列转换函数适用于看起来像这样的矢量:

convert_float2(vec2)

但是,阅读文档here,看起来不支持从/到double2的转换。这样您就可以选择手动执行转换:

a.x = float(c.x + d.x);
a.y = float(c.y + d.y);