我正在尝试制作相机的视图矩阵,使其可缩放,可平移和可旋转。我希望工作的矩阵是。
Matrix.translateM(matrixView, 0, -camposition.X, -camposition.Y, 0);
Matrix.scaleM(matrixView, 0, zoom, zoom, 1.0f);
Matrix.rotateM(matrixView, 0, camrotation, 0, 0, 1.0f);
Matrix.translateM(matrixView, 0, screenwidth / 2, screenheight / 2, 0);
然而,这种方式不起作用。如果有人能指出我正确的方向,我将不胜感激。
以下是我如何使用模型矩阵:
Matrix.translateM(matrixModel, 0, position.X, position.Y, 0.0f);
Matrix.scaleM(matrixModel, 0, scale.X, scale.Y, 1.0f);
Matrix.rotateM(matrixModel, 0, rotation, 0, 0, 1.0f);
Matrix.translateM(matrixModel, 0, -origin.X, -origin.Y, 0.0f);
以下是投影矩阵:
Matrix.orthoM(matrixProj, 0, 0f, screenWidth, screenHeight, 0, -1, 1);
我将它们在顶点着色器中相乘,如下所示:
matrixProj * matrixView * matrixModel * vPosition;
答案 0 :(得分:0)
我找到了正确的订单,我会留给面向同样问题的未来开发人员。
Matrix.translateM(matrixView, 0, screenWidth / 2, screenHeight / 2, 0);
Matrix.scaleM(matrixView, 0, camZoom, camZoom, 1.0f);
Matrix.rotateM(matrixView, 0, camRotation, 0, 0, 1.0f);
Matrix.translateM(matrixView, 0, -camPosition.X, -camPosition.Y, 0);
请注意,这适用于View Matrix。对于模型矩阵,上面的代码工作正常。