目前我正在與Cocos2D玩弄。當有通知重疊顯示時,我希望能夠模糊整個場景。我認爲我可以用着色器來做到這一點(我是一個OpenGL的noob)。從我發現的是,有「fsh」文件包含着色器的一個算法。我發現了一個「gausian blurring」,但我怎麼能添加這樣一個着色器CCScene的Cocos2D?Cocos2d模糊與着色器
我似乎無法弄清楚這一點。
目前我正在與Cocos2D玩弄。當有通知重疊顯示時,我希望能夠模糊整個場景。我認爲我可以用着色器來做到這一點(我是一個OpenGL的noob)。從我發現的是,有「fsh」文件包含着色器的一個算法。我發現了一個「gausian blurring」,但我怎麼能添加這樣一個着色器CCScene的Cocos2D?Cocos2d模糊與着色器
我似乎無法弄清楚這一點。
我剛剛開始自己玩一點着色器。網絡上有很多資料可供閱讀和試用。我會指出你的方向,我認爲有用的一些網址可以幫助你理解他們的工作方式。這可能會讓你開始。
簡單的教程,實現與着色器的灰階效果(cocos2d的)
編碼實驗的博文:非常好看的着色效果。這就是我下面cocos2D上共享着色器...
http://coding-experiments.blogspot.com/2010/06/frosted-glass.html
有了這些你一定對你的方式。如果您覺得它們有用,請隨意使用下面的着色器,這些來自第二個網址。
頂點着色器
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);
}