我从android opengl es 2.0开始,我试图了解这些概念。
我已经在下面编写了旋转矩形的函数。我通过使用rotateM方法中的值成功进行了一些旋转。但是我没有成功
对我的矩形进行一些具体的旋转,例如向右旋转2D 45度。

基本上,我盯着说明以下内容的android引用;

rotationM(float [] m,int mOffset,浮点数a,浮点数x,浮点数y,浮点数z)
围绕轴(x,y,z)将矩阵m旋转角度a(以度为单位)。

现在,我了解到我们提供了一个modelMatrix,该矩阵中的偏移量和角度旋转,但是为什么我们必须提供xyz-轴分量,这些值实际上是做什么的呢?

希望有人能给我关于rotateM方法的清晰解释,在此先感谢!

private void positionRectangleInScene() {
    setIdentityM(modelMatrix, 0);

    rotateM(
        modelMatrix, // m        : source matrix
        0,           // mOffset  : index into m where the matrix starts
        0f,          // a        : angle ato rotate in degrees
        1f,          // x        : x-axis component
        1f,          // y        : y-axis component
        1f);         // z        : z-axis component

    multiplyMM(
        modelViewProjectionMatrix, 0,
        viewProjectionMatrix, 0,
        modelMatrix, 0);
}

最佳答案

xyz值表示旋转轴。例如,围绕y轴的旋转将指定为(m,0,angle,0,1,0)。您指定为(1,1,1)的内容表示您将绕所有3个轴旋转,而不是典型用法。

关于android opengl-es-2.0 -rotateM解释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22114808/

10-10 17:12