Mar*_*ote 5 core-animation catransform3d
关于CATransform3D结构的矩阵行/列顺序,我有点困惑.结构定义了这样的矩阵:
[m11 m12 m13 m14]
[m21 m22 m23 m24]
[m31 m32 m33 m34]
[m41 m42 m43 m44]
Run Code Online (Sandbox Code Playgroud)
首先,似乎值定义行(因此[m11 m12 m13 m14]形成第一行),但是当您通过(tx,ty,tz)创建转换矩阵时,矩阵将如下所示:
[ 1 0 0 0]
[ 0 1 0 0]
[ 0 0 1 0]
[tx ty tz 1]
Run Code Online (Sandbox Code Playgroud)
我的困惑来自于这不是一个有效的翻译矩阵; 将它与4元素列向量相乘将不会转换该点.
我的猜测是CATransform3D结构以列顺序存储值,因此值[m11 m12 m13 m14]构成第一列(而不是第一行).
谁能确认一下?
是的,CATransform3D是列主要顺序,因为这是OpenGL(ES)想要的.Core Animation在后台使用GL进行渲染.如果您需要证明,请查看以下man页面glMultMatrix:
参数
m指向16个连续值,用作4 x 4列主矩阵的元素.16个连续值,用作4 x 4列主矩阵的元素.
这在文档中应该更清楚CALayer.
| 归档时间: |
|
| 查看次数: |
1344 次 |
| 最近记录: |