shader没效果--请教

我按着例子中shader的写法,创建CCGLProgram 然后对象调用setShaderProgram设置. CCLabelBMFont的对象有效果,而UILabelBMFont对象没效果.谁知道是啥问题啊.
代码
CCGLProgram* pGl = new CCGLProgram();
GLchar * fragSource = (GLchar*) CCString::createWithContentsOfFile(CCFileUtils::sharedFileUtils()->fullPathForFilename(“Shaders/example_HorizontalColor.fsh”).c_str())->getCString();
pGl->initWithVertexShaderByteArray(ccPositionTexture_vert, fragSource);
pGl->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
pGl->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
pGl->link();
pGl->updateUniforms();

//CCLabelBMFont
CCLabelBMFont* m_pLabel = CCLabelBMFont::create(“RETRO EFFECT”, “fnt/west_england-64.fnt”);
m_pLabel->setShaderProgram(pGl); //有效果
pParent->addNode(m_pLabel);

//UILabelBMFont
UILabelBMFont* m_pLabel = UILabelBMFont::create();
m_pLabel->setFntFile(“fnt/west_england-64.fnt”);
m_pLabel->setText(“RETRO EFFECT”);
m_pLabel->setShaderProgram(pGl); //无效果
pParent->addChild(m_pLabel);

获取UILabelBMFont里面的CCLabelBMFont,然后操作CCLabelBMFont就可以了