美文网首页
OpenGLES入门(六)

OpenGLES入门(六)

作者: 言叶之庭_ | 来源:发表于2019-07-15 19:36 被阅读0次

本章实现了简单的图片组合滤镜效果,可以调整图片的饱和度和色温。

实现滤镜效果的主要是思路就两步:

1.将图片原始纹理作为输入,使用片段着色器处理后得到新的纹理。

2.将第一步中处理过后的纹理,当做第二个片段着色器的纹理输入,最后输出。

从上面两步,其实我们就可以知道,多重滤镜的叠加,其实就是重复这个流程,GPUImage中的滤镜链,基本上也是这个思路,有时间可以研究一下。不过最重要的,还是滤镜算法的实现:glsl代码的编写。(只会看,不会写(╯﹏╰))

下面贴出一些代码中比较重要的部分

1.使用两个program来管理纹理输入

代码中使用了两个program来输出两个纹理。_satProgramHandle用来处理原始图片输入纹理,通过改变图片的饱和度,输出一个新纹理。_tempProgramHandle处理上面输出的纹理,通过改变纹理色温,输出新纹理,并渲染到上下文。glsl具体代码在.fsh文件中。

2.这个通过图片,创建纹理1(GL_TEXTURE1),作为_satProgramHandle的输入纹理

下面就是将纹理1输入到Program中,这样就完成了我整个流程的第一步。当然这里只是截取了部分代码,整体流程还需要去项目中看。

3.创建一个帧缓冲,激活一个新纹理GL_TEXTURE0,将饱和度纹理绑定到_satTexture中,作为_tempProgram的输入纹理0

这样我们的两个输入纹理就完成了

使用两个Program分别将这两个输入纹理依次输出到相应为缓冲区,最后渲染到context中,最后的渲染代码比较多,这里就不贴图了, 所有代码都在这里

相关文章

网友评论

      本文标题:OpenGLES入门(六)

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