4

所以我有一个openCL程序,其中一些变量在float2中,有些在double2中。而且我想向上或向下转换这些变量,但我不知道该怎么做。我试图像我通常对 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 回答