如何从getTransformMatrix()

时间:2015-06-24 06:35:18

标签: android opengl-es glsurfaceview

我可以通过getTransformMatrix()从表面获得变换矩阵(4x4),但我不知道如何设置比例x,y或设置它的x轴。在这种情况下,我不知道矩阵结构。

帮帮我。这是代码:

private SurfaceTexture mSurface;
private float[] mTransformMatrix = new float[16];
private int mTransformMatrixHandle;
public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
    ...
    mTransformMatrixHandle = GLES20.glGetUniformLocation(mProgram, "textureTransform");

}
public void onDrawFrame(GL10 glUnused) {
    ...
    mSurface.getTransformMatrix(mTransformMatrix);
    //how to set pivot/scale mTransformMatrix
    ...

    GLES20.glUniformMatrix4fv(mTransformMatrixHandle, 1, false, mTransformMatrix, 0);
    ...
}

1 个答案:

答案 0 :(得分:0)

简答:

如果您不想过多地学习数学,这是可以理解的并且会节省大量时间,您可以使用现有的矩阵库,例如android.opengl.Matrix

数学答案:

OpenGL矩阵编写约定是列主要顺序。所以你的16浮点数应该对应于这个矩阵:

0 4  8 12
1 5  9 13
2 6 10 14
3 7 11 15

现在要执行旋转和缩放,您必须将此矩阵乘以相应的旋转和缩放矩阵。这将获得矩阵演算和投影几何的一些基本知识。