glMatrix规模转换是否需要WebGL下的特定订单?

时间:2012-06-29 17:24:52

标签: 3d webgl

我正在尝试使用glMatrix for WebGL进行缩放转换。

当我使用以下顺序时,缩放变换可以很好地工作:

mat4.identity(mvMatrix);
mat4.translate(mvMatrix, [1, 1, 1]);
mat4.rotate(mvMatrix, degToRad(zAngle), [0, 0, 1]);
mat4.scale(mvMatrix, [2, 2, 2]);

但是,在首先执行缩放变换时,不会重新缩放对象:

mat4.identity(mvMatrix);
mat4.scale(mvMatrix, [2, 2, 2]);
mat4.translate(mvMatrix, [1, 1, 1]);
mat4.rotate(mvMatrix, degToRad(zAngle), [0, 0, 1]);

缩放是否必须始终作为最后一个转换命令?

谢谢, 埃弗顿

1 个答案:

答案 0 :(得分:4)

请参阅this回答,了解OpenGL中的“堆叠”转换。当然,矩阵乘法不是可交换的,因此您将根据顺序得到不同的结果。