所以我有一个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”,有人可以告诉我如何强制转换它们以便正常工作吗?

提前致谢。

最佳答案

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

有一系列转换函数可用于如下所示的向量:

convert_float2(vec2)


但是,阅读文档here似乎不支持从double2到double2的转换。您可以选择手动执行转换:

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

07-24 21:15