所以我有一个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);