OpenGL多分频滤镜的实现

今天来讲一讲分频滤镜的实现

分频滤镜大致分为2分频,3分频,4分频,6分频,9分频滤镜,一是视觉上感觉良好,其次则是比较好实现

先看效果,再来说思路~


2分频效果呈现图


思路分析坐标点

因为分频滤镜没有影响到图片顶点的展示,所以顶点坐标里的数据不变,其内容是:

attribute vec4 Position;

attributevec2TextureCoords;

varyingvec2TextureCoordsVarying;

voidmain (void) {

    gl_Position= Position;

    TextureCoordsVarying = TextureCoords;

}

其次来到片元着色器里,在片元着色器里面对应点的颜色层则需要发生一定的变化,如果是2分频,则参照如下代码

precision highp float;

uniform sampler2D Texture;

varyinghighpvec2TextureCoordsVarying;

voidmain() {

    vec2uv = TextureCoordsVarying.xy;

    floaty;

    if(uv.y >=0.0&& uv.y <=0.5) {

        y = uv.y +0.25;

    }else{

        y = uv.y -0.25;

    }

    gl_FragColor=texture2D(Texture,vec2(uv.x, y));

}

其宗旨就是将对应点的颜色信息转换成自己想要显示的内容,知道原理后,其他分频的滤镜就不难写出啦~

你可能感兴趣的:(OpenGL多分频滤镜的实现)