我想在我的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 ?
答案 0 :(得分:0)
每次使用Matrix时,请确保在使用“翻译”,“缩放”或“旋转”之前使用单位矩阵对其进行初始化。我在你的代码中没有看到。然后,计算出的矩阵应在Vertex着色器之前或之中与投影矩阵相乘。