Primitivas y sprites El índice Z en Cocos2D-x 3.0 no es consistente?

Tengo dos capas Cada capa tiene un dibujo primitivo con OpenGL como este:

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 ) );
}

Cuando agregoChild estas capas a una escena y establezco las órdenes Z 1 y 2, veo que puedo poner una primitiva encima de otra y viceversa, cuando cambio los valores de la orden Z. Las cosas extrañas comienzan cuando agrego un niño Sprite en una de estas capas. Si agregoChild un sprite, el sprite se coloca encima de la primitiva de esa capa, y no solo esa capa. Incluso si la capa tiene un índice Z más pequeño, de todos modos su sprite está encima de la primitiva de otra capa, mientras que su primitiva está por debajo de la otra forma primitiva, como se esperaba. ¿Esta bien? ¿Cómo debería entender esto? ¿Qué pasa si quiero dibujar primitivas sobre todos los sprites?

EDITAR:

Podría manipular su orden, pero no el orden de dibujo, con lo siguiente:

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

Pero no entiendo por qué los sprites en una capa con un orden Z más pequeño se dibujan más tarde que las primitivas de la capa con un orden Z más grande. En otras palabras, parece que todas las primitivas de todas las capas se dibujan de acuerdo con su orden, luego se hace lo mismo para los sprites.

Respuestas a la pregunta(2)

Su respuesta a la pregunta