使用OpenGL

时间:2015-11-02 10:47:08

标签: android opengl-es

我正在使用opengl将图像渲染为纹理。我想缩放纹理,所以我使用ScaleGestureDetector。 这是我的代码:

public void scale(float scale, float focusX, float focusY) {
    Matrix.setIdentityM(uMVPMatrix, 0);
    Matrix.translateM(uMVPMatrix, 0, focusX, focusY, 0f);
    Matrix.scaleM(uMVPMatrix, 0, scale, scale, 0);
    Matrix.translateM(uMVPMatrix, 0, -focusX, -focusY, 0f);
}


private float scale = 1f;
private float focusX;
private float focusY;
@Override
public boolean onScale(ScaleGestureDetector detector) {
    renderer.scale(detector.getScaleFactor() * scale,focusX,focusY);
    return false;
}

@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
    focusX = (detector.getFocusX() - ScreenDimensionHelper.getScreenWidth(context)/2) / ((float) ScreenDimensionHelper.getScreenWidth(context)/2);
    focusY = (ScreenDimensionHelper.getScreenHeight(context)/2- detector.getFocusY()) / ((float) ScreenDimensionHelper.getScreenHeight(context)/2);
    return true;
}

@Override
public void onScaleEnd(ScaleGestureDetector detector) {
    this.scale = detector.getScaleFactor() * scale;
}

我想缩放手指触摸的位置。但是我发现当我捏合图像时,图像也会移动。是否有更好的方法可以做到这一点?

0 个答案:

没有答案