以前用如下的方法可以让UI变灰,但3.3不行了,该段程序用在Sprite上没问题(去掉getVirtualRenderer())
void CBGameUI::setGrey(ui::Widget * root)
{
GLProgram * p = new GLProgram();
p->initWithFilenames(“gray.vsh”, “gray.fsh”);
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();
root->getVirtualRenderer()->setGLProgram§;
Vector<Node*> children=root->getChildren();
for(int i=0;i<children.size();i++)
{
ui::Widget* child=(ui::Widget*)children.at(i);
child->getVirtualRenderer()->setGLProgram§;
}
}