下面所描述的对矢量成员的访问是非法的, 会引起编译错误:
访问越界的矢量成员, 一个二维矢量只能访问 .xy 或者 .rg 成员, 三维矢量只能访问 .xyz 或者 rgb 成员:
float2 pos;
pos.x = 1.0f; // is legal; so is y
pos.z = 1.0f; // is illegal; so is w
float3 pos;
pos.z = 1.0f; // is legal
pos.w = 1.0f; // is illegal
矢量成员为左值(lvalue)是, 不能同时使用两个重复的成员:
// illegal - 'x' used twice
pos.xx = float2(3.0f, 4.0f);
// illegal - mismatch between float2 and float4
pos.xy = float4(1.0f, 2.0f, 3.0f, 4.0f);
.xyzw 和 .rgba 分别是以坐标或者颜色来表示矢量成员, 两种方式不能混合使用:
float4 pos = float4(1.0f, 2.0f, 3.0f, 4.0f);
pos.x = 1.0f; // OK
pos.g = 2.0f; // OK
pos.xg = float2(3.0f, 4.0f); // illegal - mixed qualifiers used
float3 coord = pos.ryz; // illegal - mixed qualifiers used
.xyzw 和 .rgba 矢量成员访问方式不能用于指针或者引用: