SurfaceTexture.getTransformMatrix返回的是透视投影矩阵,而不是仿射变换矩阵

时间:2018-11-29 18:12:10

标签: android

有人知道为什么SurfaceTexture.getTransformMatrix将返回透视投影矩阵而不是预期的仿射变换矩阵吗? android.hardware.Camera API填充了SurfaceTexture的内容。

我正在这样设置纹理:

GLES20.glGenTextures(1,textures,0);
GLES20.glEnable(GLES11Ext.GL_TEXTURE_EXTERNAL_OES);
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, textures[0]);
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,GLES20.GL_TEXTURE_MAG_FILTER,GLES20.GL_LINEAR);
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,GLES20.GL_TEXTURE_MIN_FILTER,GLES20.GL_LINEAR);
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,GLES20.GL_TEXTURE_WRAP_S,GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_CLAMP_TO_EDGE);
GLES20.glDisable(GLES11Ext.GL_TEXTURE_EXTERNAL_OES);
surfaceTexture = new SurfaceTexture(textures[0]);

我将其分配给摄像机,如下所示:

camera.setPreviewTexture(surfaceTexture);

是否应返回仿射变换矩阵?似乎应该。查看Grafika示例(我基于其代码),其顶点着色器删除了w组件:

v_CamTexCoordinate = (camTextureTransform * camTexCoordinate).xy;

我想知道我是否丢失了某些东西,或者在我使用的设备(三星Galaxy S7)上未正确实现某些东西?

谢谢!

0 个答案:

没有答案