带custom uniforms 的shader问题(顺便提交个bug)

在spine里使用了带custom uniforms 的shader,drawcall由1变成28.看代码好像是这里的问题:
void TrianglesCommand::generateMaterialID()
{
// do not batch if using custom uniforms (since we cannot batch) it
if(_glProgramState->getUniformCount() > 0)
{
_materialID = Renderer::MATERIAL_ID_DO_NOT_BATCH;
setSkipBatching(true);
}
else
{
int glProgram = (int)_glProgram->getProgram();
int intArray[4] = { glProgram, (int)_textureID, (int)_blendType.src, (int)_blendType.dst};
_materialID = XXH32((const void*)intArray, sizeof(intArray), 0);
}
}

不想自己改底层,有办法解决吗?shader一定要用。

除了上面好像还有个bug。

void TrianglesCommand::init(float globalOrder, GLuint textureID, GLProgramState* glProgramState, const BlendFunc& blendType, const Triangles& triangles,const Mat4& mv, uint32_t flags)
{
CCASSERT(glProgramState, “Invalid GLProgramState”);
CCASSERT(glProgramState->getVertexAttribsFlags() == 0, “No custom attributes are supported in QuadCommand”);

RenderCommand::init(globalOrder, mv, flags);

_triangles = triangles;
if(_triangles.indexCount % 3 != 0)
{
    int count = _triangles.indexCount;
    _triangles.indexCount = count / 3 * 3;
    CCLOGERROR("Resize indexCount from %zd to %zd, size must be multiple times of 3", count, _triangles.indexCount);
}
_mv = mv;

if( _textureID != textureID || _blendType.src != blendType.src || _blendType.dst != blendType.dst ||
   _glProgramState != glProgramState ||
   _glProgram != glProgramState->getGLProgram())
{
    _textureID = textureID;
    _blendType = blendType;
    _glProgramState = glProgramState;
    _glProgram = glProgramState->getGLProgram();

    generateMaterialID();
}

}
问题表现:a spine 是带custom uniforms 的shader,dc 28. a消失后场景生成新的不带自定义shader 的b spine,正常应该是1dc,但结果是28.
command在复用前好像没重置成员变量_skipBatching,手动重置后回复正常。

我记得3.14的引擎已经改了meterailID的生成了

我下载的是creator1.4.2,我再检查下。应该是creator还没有更新这块。