遇到个奇怪问题,让Armature精灵变灰,开始一切正常,后面为了需要,我包装了下,结果就不正常了,渲染出来是黑色的黑块。求解?
具体是这样的:
我加载GLProgram后,我将GLProgram放入了ShaderCache里。
p->addAttribute(GLProgram::ATTRIBUTE_NAME_POSITION, GLProgram::VERTEX_ATTRIB_POSITION);
p->addAttribute(GLProgram::ATTRIBUTE_NAME_TEX_COORD, GLProgram::VERTEX_ATTRIB_TEX_COORD);
p->addAttribute(GLProgram::ATTRIBUTE_NAME_COLOR, GLProgram::VERTEX_ATTRIB_COLOR);
p->link();
p->updateUniforms();
ShaderCache::getInstance()->addProgram(p, p_strKey.c_str());
然后变灰效果类里将改GLProgram赋予给Armature精灵,这样Armature精灵全是黑的,并不是灰的。
如果我加载GLProgram时,不先
p->link();
p->updateUniforms();
而是在变灰效果类里将改GLProgram赋予给Armature精灵后再 p->link(); p->updateUniforms();
结果Armature精灵就能正常变灰。
我十分不解??这个顺序有什么意义么?关键是我先有个闪光类,就是让Armature精灵闪光,一切正常,也是先加载GLProgram就 link(); updateUniforms();
然后再用定时器控制如下就可以闪光了。
p->use();
p->setUniformLocationWith3f( sUniform_pos_CC_flashColor, r, g, b );
p->setUniformLocationWith1f( sUniform_pos_CC_flashTime, t );
一头雾水啊!!!
已解决,虽然还没清楚具体原因