美文网首页
Android OpenGLES滤镜开发之贴纸效果

Android OpenGLES滤镜开发之贴纸效果

作者: cat_code | 来源:发表于2019-02-15 17:51 被阅读0次

    思路

    1、贴纸肯定也是需要定位到人脸的

    2、找到贴纸需要放置的位置

    3、将贴纸纹理和人本身纹理进行融合

    实现

    人脸定位啥的,我就不说了,不清楚的可以去前面的文章看看,主要来看看贴纸是如何贴上去的

    1. 创建贴纸的纹理

    2. 画贴纸

    在画贴纸之前,是已经将之前摄像头那些纹理已经画上去过了,然后再来画贴纸。

    因为在OpenGL中如果不开启混合模式,就会把之前的纹理覆盖掉,这里就不会显示上一个纹理了。

    什么是混合?混合就是把某一个像素点的位置原来的颜色与将要画上去的颜色,以某种方式混合在一起,从而达到某种特殊的效果。我们这里就需要将贴纸的纹理和人脸的纹理进行一个混合。

    glBlendFunc的参数设置有多种模式,第一个参数表示的是源图因子,也就是我们要画上去的贴纸,第二个参数是目标因子,也就是我们要把贴纸画到哪儿去。这两个参数有多种值:

    这个源图因子使用的是完全使用,也就是贴纸是完全展示出来的,目标因子是用1.0 - 贴纸的alpha值来作为因子的。

    下面就是计算出贴纸所要显示的位置,然后将坐标信息传递给着色器

    很多都在代码里进行了注释,应该都可以看得懂,下面就看一下效果图吧~~

    效果图

    就差不多是这样的效果,是因为我手机问题所有才模糊不清楚的,前置摄像头完成没有问题的。

    相关文章

      网友评论

          本文标题:Android OpenGLES滤镜开发之贴纸效果

          本文链接:https://www.haomeiwen.com/subject/zwumeqtx.html