思路:
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()
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)
quick cocos2dx跑馬燈實現
利用clippingnode可以製作出許多遮擋效果,跑馬燈就是其中一種。跑馬燈是一種把文字從左向右或從右向左移動,然後到某乙個固定位置訊息的技術。實現起來還是挺簡單的,實現的思路如下 1 建立乙個要顯示的區域 矩形 2 建立乙個裁剪結點,把要顯示的區域設定為模板 3 把要顯示的文字放到裁剪結點中,並...
quick cocos2d x教程13 實現幀動畫
幀動畫是個常見功能,我把這個封裝成乙個函式。幀動畫 function mainscene newframeanimation display.addspriteframeswithfile loading.plist loading.png local frames display.newframe...
QUICK COCOS2DX建立新專案
建立新專案之前,確保已經正確設定了quick cocos2dx root環境變數 啟動 終端 應用程式,然後進入需要放置新專案的目錄 cd desktop執行create project.sh命令,並指定專案的 package name quick cocos2dx root bin create ...