3d glMatrix scale转换是否需要WebGL下的特定顺序?

3d glMatrix scale转换是否需要WebGL下的特定顺序?,3d,webgl,3d,Webgl,我正在尝试使用glMatrix对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.

我正在尝试使用glMatrix对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]);
缩放必须始终作为最后一个转换命令进行吗

谢谢, Everton

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

请参阅答案,了解OpenGL中的“叠加”变换。当然,矩阵乘法不是可交换的,所以你会根据顺序得到不同的结果