Q:按钮如何进行openlgl 渲染?
A:因为cocos中把 setGLProgramState 封装到了Node节点里面。所以我们只需要获得按钮的渲染器节点(所有组件通用,如果有这个接口即可) .方法
btn:getVirtualRenderer():getSprite():setGLProgramState(gl)
---------------------------------gl 加载
VipGlManager.GLPROGRAM_GL_LIST[_name] = cc.GLProgram:createWithFilenames(vsh_, fsh_)--创建一个灰色的shader
VipGlManager.STATE_GL_LIST[_name] = cc.GLProgramState:getOrCreateWithGLProgram(VipGlManager.GLPROGRAM_GL_LIST[_name])
getVirtualRenderer 会根据当前你按钮的状态返回相应的渲染节点。源码如下
Node* Button::getVirtualRenderer()
{
if (_bright)
{
switch (_brightStyle)
{
case BrightStyle::NORMAL:
return _buttonNormalRenderer;
case BrightStyle::HIGHLIGHT:
return _buttonClickedRenderer;
default:
return nullptr;
}
}
else
{
return _buttonDisabledRenderer;
}
}