应用Shader时缩放有BUG

创建一个sprite,并进行缩放,应用一个shader,缩放又执行一次。
比如 创建一个全屏的Sprite,setScale(0.5)后,再应该演示中变灰的Shader,结果灰色的Sprite变成了原来的0.25倍大小,好蛋疼的问题。

贴上lua源代码,请高人帮忙看下怎么解决这个问题:
local dicShader = {}
local function applyShader( node, shaderFileName )
if node ~= nil then
local shader = nil
if dicShader[ shaderFileName ] == nil then
log.debug( “TestScnee”,“create shader:” … shaderFileName )
local vshFileName = string.format( “res/shader/%s.vsh”, shaderFileName )
local fshFileName = string.format( “res/shader/%s.fsh”, shaderFileName )
shader = cc.GLProgram:create( vshFileName, fshFileName )
– shader:retain( )
– shader:addAttribute( cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION )
– shader:addAttribute( cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR )
– shader:addAttribute( cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS )
shader:link( )
shader:updateUniforms( )
dicShader[ shaderFileName ] = shader
else
shader = dicShader[ shaderFileName ]
end
node:setGLProgram( shader )
end
end

function TestScene:testShader( )
local bg = cc.Sprite:create( “res/battle/background/img_battle_bg_1.jpg” )
local sprite = cc.Sprite:create( “res/battle/background/img_battle_bg_1.jpg” )
local node = cc.Node:create( )
bg:setPosition(Arp(cc.p(480,320)))
sprite:setPosition(Arp(cc.p(480,320)))
self:addChild( bg, 0 )
sprite:setScaleX(0.5)
node:setContentSize(cc.size(480,320))
node:addChild( sprite, 0 )
self:addChild( node, 0 )
performWithDelay(self,function()
applyShader(sprite,“gray”)
applyShader(sprite,“gray”)
end,1)
end