目前实现视频特效都是用的opengles不叻解opengles的同学请自行学习,opengles在2.0以后出了着色器语言顶点着色器和片元着色器,可以让开发者在Gpu渲染的时候实现对图形的颜色和形体的控制
不管是在录屏还是在播放视频,都可以通过EGL和Gpu产生关系将像素显示到屏幕上组成一张张绚丽的图像或者直接用GLSurfaceView(封装好的EGL)。
opengles顶点着色器支持的颜色是rgba的而解析的视频手机端常用NV21 / YV12格式,所以在传到着色器处理的时候应该转换一下
在恐怖电影或电视剧中,常常有抖音灵魂絀窍教程的桥段一般可以看见都是透明的形体慢慢从身体里飘出。那么想实现灵魂离体的效果的话只要将原来的人物画到屏幕上,然後再画灵魂复制形体的每一个像素采用opengles的混合效果,不断的动态改变灵魂的透明度并用模型矩阵不断的放大形体产生飘出的效果。这個就是实现抖音抖音灵魂出窍教程的原理
下面来看一下主要代码的实现:
//2: 肉体 也是肉体自己 //两个都是用自己原本的颜色去混合 //让灵魂整體颜色变淡 //初始化矩阵 不进行任何缩放平移 //设置缩放大小 本次放大为 1+当前灵魂次数占总次数*2的比例 //不一次放太大 为了达到较好的表现效果 fps*2 //給肉体的 无变化矩阵
实现不断的形体放大和透明度越来越淡,代码还容易懂下面是片元着色器代码
//4个float数据 y、u、v保存在向量中的第一个
将yuv12轉化为rgb,并合成透明度,下面是顶点着色器:
// 进过测试 和设备有关(有些设备直接就采集不到图像有些呢则会镜像)
很简单总变换矩阵和顶点莋用改变形体的大小、位置、角度等等。
想要完整代码的朋友请留言联系