2014-01-21 87 views
0

我想实现放大\放出我的plaine物体。放大Opengl ES

现在,我尝试缩放:

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

+0

为什么downvoted?.... –

回答

0

每次使用矩阵的时间,以确保您使用翻译,缩放或旋转之前与单位矩阵进行初始化。我没有看到你的代码。计算出的矩阵应该在顶点着色器之前或之中与投影矩阵相乘。