除了上面好像还有个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,手动重置后回复正常。