ZHCUAQ1F july 2015 – april 2023
您可以使用字面量或标量变量,指定用于向量初始化或分配的值。如果分配给向量的所有值均是常数,得到的结果就是向量字面量。否则向量的值在运行时确定。
例如,在以下声明中分配给 vec_a 和 vec_b 的值是向量字面量,并且在编译时已知:
short4 vec_a = (short4)(1, 2, 3, 4);
float2 vec_b = (float2)(3.2, -2.3);
以下语句会将向量的所有元素初始化为相同的值,在本例中该值为 1。
ushort4 myushort4 = (ushort4)(1);
较短的向量可以串联到一起,组成较长的向量。在以下示例中,两个 int 变量串联为一个 int2 变量。在以下函数中 myvec 的值直到运行时才进行解析:
void foo(int a, int b)
{
int2 myvec = (int2)(a, b);
...
}
在以下示例中,两个 int2 变量串联为一个 int4 变量,并传递到外部函数:
extern void bar(int4 v4);
void foo(int a, int b)
{
int2 myv2_a = (int2)(a, 1);
int2 myv2_b = (int2)(b, 2);
int4 myv4 = (int4)(myv2_a, myv2_b);
bar(myv4);
}