目前我正在玩 Cocos2D。当有通知覆盖显示时,我希望能够模糊整个场景。
我想我可以用着色器来做到这一点(我是一个 OpenGL 菜鸟)。我发现有“fsh”文件包含着色器的算法。我找到了一个“高斯模糊”,但我怎样才能将这样的着色器添加到 Cocos2D 的 CCScene 中?
我似乎无法弄清楚这一点。
我自己刚刚开始玩一点着色器。网上有很多资料可供阅读和试用。我会向您指出一些我认为有用的 url 的方向,以了解它们是如何/做什么的。这可能会让您入门。
使用着色器实现灰度效果的简单教程(Cocos2D)
编码实验博文:漂亮的着色器效果。这是我在下面分享给 cocos2D 的着色器...
http://coding-experiments.blogspot.com/2010/06/frosted-glass.html
有了这些,你肯定在路上。如果您发现它们有用,也可以随意使用下面的着色器,这些着色器取自第二个 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);
}