Ios 带有着色器的Cocos2d模糊

Ios 带有着色器的Cocos2d模糊,ios,opengl-es,cocos2d-iphone,shader,blur,Ios,Opengl Es,Cocos2d Iphone,Shader,Blur,目前我正在玩Cocos2D。我想能够模糊整个场景时,有一个通知覆盖显示 我想我可以用着色器实现这一点(我是一个相当不错的OpenGL noob)。我发现有一些“fsh”文件包含着色器的算法。我为“”找到了一个着色器,但如何将这样的着色器添加到Cocos2D的CCScene 我似乎无法理解这一点。我自己刚刚开始玩一些着色器。网上有很多资料可以阅读和试用。我将向您介绍一些我发现有助于理解它们如何/做什么的URL。。这可能会让你开始 使用着色器实现灰度效果的简单教程(Cocos2D) 编码实验blo

目前我正在玩Cocos2D。我想能够模糊整个场景时,有一个通知覆盖显示

我想我可以用着色器实现这一点(我是一个相当不错的OpenGL noob)。我发现有一些“fsh”文件包含着色器的算法。我为“”找到了一个着色器,但如何将这样的着色器添加到Cocos2D的CCScene


我似乎无法理解这一点。

我自己刚刚开始玩一些着色器。网上有很多资料可以阅读和试用。我将向您介绍一些我发现有助于理解它们如何/做什么的URL。。这可能会让你开始

使用着色器实现灰度效果的简单教程(Cocos2D)

编码实验blogpost:非常好看的着色器效果。这是我在下面为cocos2D共享的着色器…

和那些人在一起,你肯定就在路上了。如果您觉得下面的着色器有用,也可以随意使用,这些着色器取自第二个url

顶点着色器

attribute vec4 a_position;
attirbute vec4 a_color;
attribute vec2 a_texCoord;

uniform mat4 u_MVPMatrix;
varying lowp vec2 v_fragmentColor;
varying lowp vec2 v_texCoord;

void main()
{
    gl_Position = CC_MVPMatrix * a_position;
    v_fragmentColor = a_color;
    v_texCoord = a_texCoord;
}
varying lowp vec4 v_fragmentColor;
varying lowp vec2 v_texCoord;
uniform sampler2D u_texture;

float rand(vec2 co)
{
    return fract(sin(dot(co.xy ,vec2(92.,80.))) +
                 cos(dot(co.xy ,vec2(41.,62.))) * 5.1);
}

void main()
{
    vec2 rnd = vec2(0.0);
    rnd = vec2(rand(v_texCoord),rand(v_texCoord));
    glFragColor = texture2D(u_texture, v_texCoord+rnd*0.05);
}
片段着色器

attribute vec4 a_position;
attirbute vec4 a_color;
attribute vec2 a_texCoord;

uniform mat4 u_MVPMatrix;
varying lowp vec2 v_fragmentColor;
varying lowp vec2 v_texCoord;

void main()
{
    gl_Position = CC_MVPMatrix * a_position;
    v_fragmentColor = a_color;
    v_texCoord = a_texCoord;
}
varying lowp vec4 v_fragmentColor;
varying lowp vec2 v_texCoord;
uniform sampler2D u_texture;

float rand(vec2 co)
{
    return fract(sin(dot(co.xy ,vec2(92.,80.))) +
                 cos(dot(co.xy ,vec2(41.,62.))) * 5.1);
}

void main()
{
    vec2 rnd = vec2(0.0);
    rnd = vec2(rand(v_texCoord),rand(v_texCoord));
    glFragColor = texture2D(u_texture, v_texCoord+rnd*0.05);
}