Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 同时缩放和旋转纹理变换矩阵_Java_Android_Opengl Es_Grafika - Fatal编程技术网

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

Java 同时缩放和旋转纹理变换矩阵,java,android,opengl-es,grafika,Java,Android,Opengl Es,Grafika,从grafika的例子开始,我试图捕捉一个相机流到文件。在编码之前,我需要应用一些转换: 旋转图像 我可以这样做: 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); 应用刻度和平移 图像沿一个轴压缩。所以我必须沿着这个轴缩放,然后平移一点,这样我们才能看

从grafika的例子开始,我试图捕捉一个相机流到文件。在编码之前,我需要应用一些转换:

  • 旋转图像
  • 我可以这样做:

    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);
    
  • 应用刻度和平移
  • 图像沿一个轴压缩。所以我必须沿着这个轴缩放,然后平移一点,这样我们才能看到中间部分。 同样,我可以这样做:

    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);
    
    float-scaleX=mScaleX;//<1或=1
    float scaleY=mScaleY;//<1或=1
    浮点scaleTranslX=(1F-scaleX)/2F;
    浮点scaleTranslY=(1F-scaleY)/2F;
    translateM(transform,0,scaleTranslX,scaleTranslY,0);
    scaleM(变换,0,scaleX,scaleY,1);
    
    转换是为了在最终结果中获得“中心裁剪”,因为编码器将只捕获给定视口中绘制的内容

    然而,我对将这两项行动结合起来感到迷茫。我花了几个小时在这个问题上,我的研究没有帮助。
    有人能解决这个问题吗?

    我想旋转和平移可能有问题。若你们先旋转,然后平移,那个么你们会得到旋转的效果,而做反向运动会给你们轨道运动的效果,所以我想你们可以仔细看看你们正在做的第一个操作。