所以我有一个openCL程序,其中一些变量在float2中,一些在double2中。我想向上或向下转换这些变量,但我不知道该怎么做。我尝试明确地将它像我通常为浮动和双重做的那样,但它没有用。
float2 a,b;
double2 c,d;
a = (float2)(c+d); //didnt work
a = float2(c+d); //didnt work
也许我不理解“float2”和“double2”类型,有人可以告诉我如何投射它们以便正常工作吗?
提前致谢。
答案 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);