O índice Z de primitivas e sprites no Cocos2D-x 3.0 não é consistente?

Eu tenho duas camadas. Cada camada possui um desenho primitivo com o OpenGL, assim:

void Layer1::drawPolygon()
{
    glLineWidth(1);
    DrawPrimitives::setDrawColor4B(255,255,255,255);
    DrawPrimitives::setPointSize(1);

    // Anti-Aliased
    glEnable(GL_LINE_SMOOTH);

    // filled poly
    glLineWidth(1);
    Point filledVertices[] = { Point(10,120), Point(50,120), Point(50,170), Point(25,200), Point(10,170) };
    DrawPrimitives::drawSolidPoly(filledVertices, 5, Color4F(0.5f, 0.5f, 1, 1 ) );
}

Quando adicionoChild essas camadas a uma cena e defino as ordens Z 1 e 2, vejo que consigo colocar uma primitiva em cima da outra e vice-versa - quando troco os valores da ordem Z. As coisas estranhas começam quando adiciono um sprite a uma dessas camadas. Se eu adicionar um sprite a uma criança, ele será colocado em cima do primitivo dessa camada, e não apenas dessa camada. Mesmo que a camada tenha um índice Z menor, seu sprite estará sobre o primitivo de outra camada, enquanto o primitivo está abaixo da outra forma primitiva - como era de se esperar. Isso está bom? Como eu deveria entender isso? E se eu quiser desenhar primitivas em cima de todos os sprites?

EDITAR:

Eu poderia manipular a ordem deles, mas não a ordem do desenho, com o seguinte:

CCDirector::getInstance()->setDepthTest(true);
myLayer->setVertexZ(-1);

Mas eu não entendo por que sprites em uma camada com ordem Z menor são desenhados mais tarde do que as primitivas da camada com ordem Z maior. Em outras palavras, parece que todas as primitivas de todas as camadas estão sendo desenhadas de acordo com a ordem delas, e o mesmo está sendo feito para os sprites.

questionAnswers(2)

yourAnswerToTheQuestion