Matrix 矩阵转换OpenGL ES 2.0

Matrix 矩阵转换OpenGL ES 2.0,matrix,opengl-es,projection,Matrix,Opengl Es,Projection,我想知道如何在自定义GL渲染器中使用此矩阵来实现收缩缩放。我不断收到一个错误,告诉我我无法设置opengl.Matrix,它是float[16]类型,我在下面的活动中更改了Matrix对象。传递graphics.matrix以使其正确更新视图的正确方法是什么?作为一种解决方法,我将newDist值传递给渲染器,但是每次我用两个手指触摸屏幕时,它都会重置eyeZ值,因此我认为我确实需要让这个矩阵工作,以便它保存缩放值 @Override public boolean onTouch(View v,

我想知道如何在自定义GL渲染器中使用此矩阵来实现收缩缩放。我不断收到一个错误,告诉我我无法设置opengl.Matrix,它是float[16]类型,我在下面的活动中更改了Matrix对象。传递graphics.matrix以使其正确更新视图的正确方法是什么?作为一种解决方法,我将newDist值传递给渲染器,但是每次我用两个手指触摸屏幕时,它都会重置eyeZ值,因此我认为我确实需要让这个矩阵工作,以便它保存缩放值

@Override public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_DOWN:
        savedMatrix.set(matrix);
        start.set(event.getX(), event.getY());
        Log.d(TAG, "mode=DRAG");

        break;
    case MotionEvent.ACTION_POINTER_DOWN:
        oldDist = spacing(event);
        Log.d(TAG, "oldDist=" + oldDist);
        if (oldDist > 10f) {
            savedMatrix.set(matrix);
            midPoint(mid, event);
            mode = ZOOM;
            Log.d(TAG, "mode=ZOOM");
        }
        break;
    case MotionEvent.ACTION_UP:
    case MotionEvent.ACTION_POINTER_UP:
        mode = NONE;
        Log.d(TAG, "mode=NONE");
        break;
    case MotionEvent.ACTION_MOVE:

        if (mode == ZOOM) {
            final float newDist = spacing(event);
            Log.d(TAG, "newDist=" + newDist);
            if (newDist > 10f) {
                matrix.set(savedMatrix);
                float scale = newDist / oldDist;
                matrix.postScale(scale, scale, mid.x, mid.y);
                mGLSurfaceView.queueEvent(new Runnable() {
                    @Override
                    public void run() {
                        mGLSurfaceView.setMyMatrix(newDist);
                        Log.d(TAG, "runnable exists");
                    }
                });
            }
        }

        break;
}

return true; // indicate event was handled
}