Metal 着色语言编程指南 八

构造矩阵对象

同矢量对象的构造相似, 矩阵对象也可以从标量或者矢量集合来构造,  当矩阵初始化时,其构造器参数决定了它是如何被创建的。 例如, 如果构造器参数仅仅是一个标量, 那么这个矩阵的对角线上的成员被初始化为这个标量,其他成员被初始化为0.0。  

下面的这个调用

float4x4(fval);
构造的矩阵为:

fval    0.0    0.0    0.0
0.0    fval    0.0    0.0
0.0    0.0    fval    0.0
0.0    0.0    0.0    fval

矩阵也可以从另一个相同维数的矩阵来构建:

float3x4(float3x4);
float3x4(half3x4);
这种构造方式,矩阵的成员是以列为顺序来初始化的, 参数矩阵的维数必须与目标矩阵相同, 否则(过多或者过少)都会引发编译错误。 

一个nxm的矩阵可以从n个m维的矢量来构造,例如:

float2x2(float2, float2);
float3x3(float3, float3, float3);
float3x2(float2, float2, float2);
矩阵不能从多个标量或者标量与矢量的组合来构造, 下面是一些非法的构造:

// both cases below are not supported
float2x2(float a00, float a01, float a10, float a11);
float2x3(float2 a, float b, float2 c, float d);

原子数据类型(Atomic Data Type)

原子类型只能在原子函数(Atomic Function)中使用, 关于原子函数会在下文讲述。 Metal 着色语言的原子函数就是C++11中的原子与同步函数的子集。 原子函数必须操作原子数据。 
Metal 着色语言的原子类型有:  atomic_int 和 atomic_uint。  


译自: 

https://developer.apple.com/library/ios/documentation/Metal/Reference/MetalShadingLanguageGuide/data-types/data-types.html#//apple_ref/doc/uid/TP40014364-CH2-SW1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值