2015-06-24 35 views
-1

我可以通过getTransformMatrix()从表面获得转换矩阵(4x4),但我不知道如何设置scale x,y或设置pivot x,y。在这种情况下,我不知道矩阵结构。如何修改转换矩阵getTransformMatrix()

帮帮我。下面是代码:

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); 
    ... 
} 

回答

0

简短的回答:

如果你不想打扰太多与数学,这是可以理解的,并会为你节省大量的时间,你可以使用现有的矩阵库如android.opengl.Matrix

数学答案:

OpenGL的矩阵写作惯例是山坳umn主要订单。所以,你的16个浮点数的数组应该对应于这个矩阵:

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

我们进行旋转和缩放,你必须通过相应的旋转和缩放矩阵相乘这个矩阵。这将会提示一些矩阵微积分和投影几何的基本知识。