2015-06-24 2 views
-1

Я мог получить матрицу преобразования (4x4) с поверхности на getTransformMatrix(), но я не знаю, как установить масштаб x, y или установить его ось 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 major заказ. Таким образом, ваш 16 поплавки массив должен соответствует этой матрице:

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

Теперь выполнять повороты и масштабирование, нужно умножить эту матрицу на соответствующем вращение и масштабирование матрицы. Это потребует некоторых базовых знаний о матричном исчислении и геометрии проекции.

Смежные вопросы