Hi;
I’m doing some custom drawing with my sprite and everything works fine, except when I add children to my sprite, they never get drawn on top of sprite. why that may happen?
I took ProgressTimer and changed only names, so that means ProgressTimer has same bug, it doesn’t draws it’s children on the top of it, what is the problem?
thanks for attention.
void MYSprite::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags)
{
if( ! _vertexData || ! _sprite)
return;
_customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(MYSprite::onDraw, this, transform, flags);
renderer->addCommand(&_customCommand);
}
void MYSprite::onDraw(const Mat4 &transform, uint32_t flags)
{
getGLProgram()->use();
getGLProgram()->setUniformsForBuiltins(transform);
GL::blendFunc( _sprite->getBlendFunc().src, _sprite->getBlendFunc().dst );
GL::enableVertexAttribs(GL::VERTEX_ATTRIB_FLAG_POS_COLOR_TEX );
GL::bindTexture2D( _sprite->getTexture()->getName() );
glVertexAttribPointer( GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, sizeof(_vertexData[0]) , &_vertexData[0].vertices);
glVertexAttribPointer( GLProgram::VERTEX_ATTRIB_TEX_COORD, 2, GL_FLOAT, GL_FALSE, sizeof(_vertexData[0]), &_vertexData[0].texCoords);
glVertexAttribPointer( GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(_vertexData[0]), &_vertexData[0].colors);
glDrawArrays(GL_TRIANGLE_FAN, 0, _allVertexCount);
CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1,_allVertexCount);
}