要实现游戏中对话框的背景不是单调地叠一层半透明黑色,而是能有模糊的虚化效果。像是这个网页中第一个按钮按下去的样子。
显然,如果在要手游中实现这个效果,需要借助 OpenGL ES 2.0 Shader 来完成。
一个理想的方案是对当前场景设置一个 Shader 并在 Shader 中实现模糊效果,使得整个场景虚化。但是对话框也需要置于场景中,这会导致连对话框也虚化掉。
RenderTexture/FrameBuffer
不过好在现实也没有那么理想,在 Cocos2d 中直接对场景(CCScene)设置 Shader 是不起作用的。
一个变通的方法是将场景先绘制到缓冲区,然后再对缓冲区进行模糊。可以使用cc.director.getRunningScene().visit(); 完成这一操作:
1
2
3
4
|
var bgTex = cc.RenderTexture.create(cc.visibleRect.width, cc.visibleRect.height);
bgTex.begin();
cc.director.getRunningScene().visit();
bgTex.end();
|