Android WebRTC视频旋转问题

    最近在对接WebRTC到安卓手机上,有个需求就是手机横屏时将对方图像进行旋转,研究了WebRTC video_render的代码后发现远端的视频渲染使用opengles20或surfaceview实现,其中opengles20使用硬件渲染,因此性能更好,所以只需将video_render_opengles20.h中的VideoRenderOpenGles20类加上旋转接口即可。

opengles20和opengles相比取消了glRotatex等操作函数,旋转操作改为由shader的顶点渲染实现,改写的shader代码如下:

  

uniform mat4 uMVPMatrix; //总变换矩阵
attribute vec4 aPosition;  //顶点位置
attribute vec2 aTextureCoord;
varying vec2 vTextureCoord;
void main()     
{                                   
   gl_Position = uMVPMatrix * aPosition; //根据总变换矩阵计算此次绘制此顶点位置
   vTextureCoord = aTextureCoord;//将接收的颜色传递给片元着色器 
}

  

 注意添加了变换矩阵uMVPMatrix,在绘制前调用:

int muMVPMatrixHandle = glGetUniformLocation(mProgram, "uMVPMatrix");

mMMatrix.setRotate(rotate);

glUniformMatrix4fv(muMVPMatrixHandle, 1false, (float*)mMMatrix);

 

posted on 2015-11-11 21:58  zentel  阅读(2434)  评论(0编辑  收藏  举报

导航