Matrix.setRotateM和Matrix.rotateM之间有什么区别吗?

时间:2012-08-05 17:13:35

标签: android matrix opengl-es-2.0

在android.opengl.Matrix类中有两种旋转矩阵的方法,它们是:

  1. static void rotateM (float[] m, int mOffset, float a, float x, float y, float z)
    围绕轴(x,y,z)以角度a(以度为单位)旋转矩阵m

  2. static void setRotateM(float[] rm, int rmOffset, float a, float x, float y, float z)
    围绕轴(x,y,z)以角度a(以度为单位)旋转矩阵m

  3. Here is the original ducumentation

    这些方法有点不同,但我不明白确切的区别。你能解释一下吗?

2 个答案:

答案 0 :(得分:5)

假设矩阵R是围绕(x,y,z)轴旋转矩阵的角度a,则rotateM方法修改现有矩阵m,如下所示:m = R * m,但setRotateM会覆盖它:m = R

答案 1 :(得分:5)

以上答案是正确的。不过,我有一个小小的通知。 请注意Matrix.rotateM()分配16个字节,因此在绘制每个帧时不要调用它。如果需要,最好使用预先分配的临时矩阵实现自己的旋转方法。更多信息: https://groups.google.com/forum/?fromgroups#!topic/android-developers/sw3SpDfPsHY[1-25]