cocos2d-x imageview setGLProgram问题

auto fileUtiles = FileUtils::getInstance();
auto fragmentFullPath = fileUtiles->fullPathForFilename(“example_greyScale.fsh”);
auto fragSource = fileUtiles->getStringFromFile(fragmentFullPath);

GLProgram * p = GLProgram::createWithByteArrays(ccPositionTextureColor_noMVP_vert, fragSource.c_str());
p->bindAttribLocation(GLProgram::ATTRIBUTE_NAME_POSITION, GLProgram::VERTEX_ATTRIB_POSITION);
p->bindAttribLocation(GLProgram::ATTRIBUTE_NAME_COLOR, GLProgram::VERTEX_ATTRIB_COLOR);
p->bindAttribLocation(GLProgram::ATTRIBUTE_NAME_TEX_COORD, GLProgram::VERTEX_ATTRIB_TEX_COORDS);
p->link();
p->updateUniforms();

Widget pChild = dynamic_cast<Widget>(pRef);

if (pChild->getDescription() == “Button”)
{
Button pButton = dynamic_cast<Button>(child);
if (!pButton->isScale9Enabled())
(Sprite*)pButton->getVirtualRenderer()->setGLProgram§;
else
{
Node pScale9Sprite = (Node)(pButton->getVirtualRenderer());
for (auto child : pScale9Sprite->getChildren())
{
for (auto c : child->getChildren())
{
c->setGLProgram§;
}
}
}

当imageview 开启九宫格后设置shader无效,求大神指点, cocos2d-x 3.1版本