同时缩放和旋转纹理变换矩阵

时间:2018-09-16 17:50:16

标签: java android opengl-es grafika

从grafika示例开始,我试图将相机流捕获到文件中。在编码之前,我需要应用一些转换:

  1. 旋转图像

我可以这样做:

Matrix.translateM(transform, 0, 0.5F, 0.5F, 0);
Matrix.rotateM(transform, 0, rotation, 0, 0, 1);
Matrix.translateM(transform, 0, -0.5F, -0.5F, 0);
  1. 应用比例尺和翻译

图像沿一个轴压缩。所以我必须沿该轴缩放,而不是平移一点,以便我们看到中间部分。 同样,我可以这样做,如下所示:

float scaleX = mScaleX; // < 1 or == 1
float scaleY = mScaleY; // < 1 or == 1
float scaleTranslX = (1F - scaleX) / 2F;
float scaleTranslY = (1F - scaleY) / 2F;
Matrix.translateM(transform, 0, scaleTranslX, scaleTranslY, 0);
Matrix.scaleM(transform, 0, scaleX, scaleY, 1);

翻译是为了在最终结果中获得“中心裁剪”,因为编码器将仅捕获在给定视口中绘制的内容。

但是,我不知道将这两种操作结合​​在一起。我已经花了几个小时,而我的研究却无济于事。 谁能解决这个问题?

0 个答案:

没有答案