放大Opengl ES

时间:2014-01-21 15:38:38

标签: android opengl-es-2.0

我想在我的plaine对象中实现放大\。

现在我尝试缩放:

    Matrix.translateM(mModelMatrix, 0, mFocalPoint.x, mFocalPoint.y, 0f);
    Matrix.scaleM(mModelMatrix, 0, mCurrentScaleFactor, mCurrentScaleFactor, 1f);
    Matrix.translateM(mModelMatrix, 0, -mFocalPoint.x, -mFocalPoint.y, 0f);

在第一次变焦中我有成功的结果,但在下一次变焦时我有一个问题 - 看起来像是根据旧矩阵计算的焦点。

我在这里计算了一个焦点

    float glX = detector.getFocusX() * mScaleCoefX - mGLSceneWidth/2;
    float glY = mGLSceneHeight - detector.getFocusY() * mScaleCoefY - mGLSceneHeight/2;
    mFocalPoint = new PointF(glX, glY);

此外,我还会在每次缩放之后保存我的模型矩阵并在每次绘制之前恢复。

所以我有一个问题。为什么我的缩放不起作用 if i save matrix after each zoom 并开始缩放新矩阵?

另外 - 也许我应该重新计算我的mFocalPoint

1 个答案:

答案 0 :(得分:0)

每次使用Matrix时,请确保在使用“翻译”,“缩放”或“旋转”之前使用单位矩阵对其进行初始化。我在你的代码中没有看到。然后,计算出的矩阵应在Vertex着色器之前或之中与投影矩阵相乘。