quick-cocos2dx实现弹窗背景虚化
2015-12-31 15:21
323 查看
思路:
1. 先将背景截图(图1)。
2. 用shader将图1进行模糊处理。
3. 对图1进行截图(图2)。
4. 保留图2,释放掉图1。
原因:shader渲染是每帧进行,图1一直存在的话会耗费GPU资源渲染。故再次截屏生成图2释放掉图1,可以降低开销。
1. 先将背景截图(图1)。
2. 用shader将图1进行模糊处理。
3. 对图1进行截图(图2)。
4. 保留图2,释放掉图1。
原因:shader渲染是每帧进行,图1一直存在的话会耗费GPU资源渲染。故再次截屏生成图2释放掉图1,可以降低开销。
local win_size = size or (cc.Director:getInstance():getWinSize()) --截屏 local render_texture = cc.RenderTexture:create(win_size.width, win_size.height) render_texture:begin() app:mainScene():visit() render_texture:endToLua() local photo_texture = render_texture:getSprite():getTexture() local sprite_photo = cc.Sprite:createWithTexture(photo_texture) :addTo(self) :pos(display.cx, display.cy) --强制渲染 sprite_photo:visit() --模糊处理 local size = sprite_photo:getTexture():getContentSizeInPixels() local program = cc.GLProgram:createWithFilenames("res/shaders/2d_default.vert","res/shaders/example_Blur.frag") --此处的shader调用的是cocos2d-x-3.6\tests\cpp-tests\Resources\Shaders下面的example_Blur.fsh。 local gl_program_state = cc.GLProgramState:getOrCreateWithGLProgram(program) sprite_photo:setGLProgramState(gl_program_state) --设置模糊参数 sprite_photo:getGLProgramState():setUniformVec2("resolution", cc.p(size.width, size.height)) sprite_photo:getGLProgramState():setUniformFloat("blurRadius",blurRadius or 16) sprite_photo:getGLProgramState():setUniformFloat("sampleNum",sampleNum or 8) --再次截屏 local render_texture1 = cc.RenderTexture:create(size.width, size.height) render_texture1:begin() sprite_photo:visit() render_texture1:endToLua() local photo_texture1 = render_texture1:getSprite():getTexture() local sprite_photo1 = cc.Sprite:createWithTexture(photo_texture1) :addTo(self, -1) :pos(display.cx, display.cy) --销毁第一次截屏图片 self:removeChild(sprite_photo)
相关文章推荐
- cocos2d-x调用摄像头和相册并裁减图片
- cocos2d-x调用摄像头和相册并裁减图片
- cocos2dx内嵌gamecenter时的解决方案
- cocosjs+ccs在iphone6上花屏进展
- cocos run -p android 无法真机调试
- [Cocos2d-x开发问题-3] cocos2dx动画Animation介绍
- 【cocos2d-x 3.x 学习与应用总结】3: CallFunc系列
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第八部---怪物出场
- Cocos2d_android你所需要知道的一切(下)
- 【Cocos2d-x源码分析】 FileUtils如何跨平台查找文件
- 【cocos2d-x 3.4】全屏显示窗口,隐藏标题栏
- Cocos2d-x 3.0坐标系详解
- cocostudio1.6UI编辑器中动画使用 cocos2dx3.3 播放问题记录
- 用COCOS-2DX做一个RPG游戏(一)
- 19.cocos2d-x获取当前时间
- cocos2d-x(十二)Lua开发飞机大战-7-加入敌机
- cocos2d-x在eclipse上搭建开发环境(全网最标准方法,不要cywin)
- cocos2dx(3.9)工程项目,使用android studio打包并调试
- 【解决办法】使用Cocos Code IDE 导出 Android 工程「执行命令出错,返回值:2。」
- cocos2dx+lua注册事件函数详解