2013-03-22 14 views
2

xcode中的矢量构造器使用铛,因此就可以使用像铛:如何启用ext_vector_type

typedef float float4 __attribute__((ext_vector_type(4))); 

矢量当我初始化使用

float4 v = (float4)(1.0f, 2.0f, 3.0f, 4.0f); 

然后所有4种成分是4.0的向量。有没有可能在xcode中启用clang的向量构造函数?

回答

2

问题是,使用C(和C++)语法时,当你做(x, y, z, w)时,comma operator使得它只有4.0f。当分配给float4时,它将成为所有组件设置为4.0f的矢量。

使用括号代替括号,像这样:

float4 v = {1, 2, 3, 4}; 

这会给你其中x = 1,Y = 2,Z = 3以及w = 4的载体。

+0

它不能解决问题。例如,您需要执行以下操作: 'float2 var1 = {1.0f,2.0f}; float2 var2 = {2.0f,3.0f}; float4 var3 =(float4)(var1.xy,var2.xy);' – binaryzebra 2015-12-01 10:59:05

+0

@ user1917057你确定吗? [它似乎按预期工作](http://rextester.com/JFKXW73742)。 – zneak 2015-12-01 17:01:16

+0

是的,我有同样的问题@ user529758了。
何时执行以下操作:'float4 v =(float4)(1.0f,2.0f,3.0f,4.0f);' – binaryzebra 2015-12-02 20:31:21