(求助)cocosStudio制作的动画(Armature)如何添加shader

Sprite可以使用setGLProgram或者setGLProgramState来设置shader
Armature使用上述方法无效
引擎cocos2dx 3.2 lua开发,请问我应该用什么方法才能给Armature添加shader呢?

骨骼动画需要遍历骨骼,并取出renderNode,然后设置setGLProgramState。

local p = createGrayShader()
local bones = armature:getBoneDic()
for key, var in pairs(bones) do
var:getDisplayRenderNode():setGLProgramState§
end

我使用以上代码还是不行,能给个lua的代码吗?

grayArmature:function(armature){
var locBoneDic = armature.getBoneDic();
for (var key in locBoneDic) {
var bone = locBoneDic;
var detector = bone.getColliderDetector();

    if (bone && bone.getDisplayRenderNode) {
        var node = bone.getDisplayRenderNode();
        this.graySprite(node);
    }

    if(!detector)
        continue;
    var bodyList = detector.getColliderBodyList();
    for (var i = 0; i < bodyList.length; i++) {
        var body = bodyList;
    }
}

},graySprite:function(sprite)
{
if( ‘opengl’ in cc.sys.capabilities ) {
if(sprite)
{
var shader = new cc.GLProgram();//cc.GLProgram.create(“gray.vsh”, “gray.fsh”);
shader.retain();
shader.init(this.vsh,this.fsh);
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();
    sprite.setShaderProgram(shader);
}    
}

}

骨骼必须每一个取出来绘制