2015-06-24 91 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 

我們進行旋轉和縮放,你必須通過相應的旋轉和縮放矩陣相乘這個矩陣。這將會提示一些矩陣微積分和投影幾何的基本知識。