Metal 着色语言编程指南 六

下面所描述的对矢量成员的访问是非法的, 会引起编译错误:

     访问越界的矢量成员,  一个二维矢量只能访问 .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 矢量成员访问方式不能用于指针或者引用:
float4 pos = float4(1.0f, 2.0f, 3.0f, 4.0f);
my_func(&pos.xy);    // illegal

sizeof 操作符作用在一个矢量的时候, 其返回值为矢量的维数乘以其单个成员的大小, 举例来说:  sizeof(float4) = 16,  sizeof(half4) = 8.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值