如果需要用opengl ES对视频输出的帧做渲染处理,比如四棱锥,六面体的反映射,就需要实现GLSurfaceView.Renderer这个接口。
GLSurfaceView.Renderer 一个渲染器接口,完成设置之后要调用 setRenderer(GLSurfaceView.Renderer) 去注册。其接口:
onDrawFrame(GL10 glUnused)
需要画图时调用这里。mSurface.setOnFrameAvailableListener()就是将监听绑定到mSurface这个SurfaceTexture上。
onSurfaceChanged(GL10 glUnused, int width, int height)
当surface大小发生变化会来到这里。
onSurfaceCreated(GL10 glUnused, EGLConfig config)
当GLSurfaceView创建时,会调用这个接口。初始化用,写shader创建program之类的都放在这里完成。其中,setEGLContextClientVersion(2)是设置opengl ES的版本号
这里先记个大概笔记,后面再补充代码对应分析。
更详细请参考
http://web.mit.edu/hychenj/MacData/afs/sipb/project/android/docs/reference/android/opengl/GLSurfaceView.Renderer.html