Индекс Z примитивов и спрайтов в Cocos2D-x 3.0 не соответствует?

У меня есть два слоя. Каждый слой имеет примитивный рисунок с OpenGL, например:

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

Когда я добавляю эти слои в сцену и устанавливаю Z-порядки 1 и 2, я вижу, что могу поместить один примитив поверх другого и наоборот - когда я обмениваюсь значениями Z-порядка. Странные вещи начинаются, когда я добавляю спрайт в один из этих слоев. Если я добавлю Child для спрайта, то спрайт лежит поверх примитива этого слоя, а не только этого слоя. Даже если слой имеет меньший индекс Z, в любом случае его спрайт находится поверх примитива другого слоя, в то время как его примитив находится ниже другой примитивной формы - как и ожидалось. Это нормально? Как я должен это понимать? Что если я хочу нарисовать примитивы поверх всех спрайтов?

РЕДАКТИРОВАТЬ:

Я мог управлять их порядком, но не порядком рисования, с помощью следующего:

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

Но я не понимаю, почему спрайты в слое с меньшим Z-порядком рисуются позже, чем примитивы слоя с большим Z-порядком. Другими словами, кажется, что все примитивы из всех слоев рисуются в соответствии с их порядком, затем то же самое делается для спрайтов.

Ответы на вопрос(2)

Ваш ответ на вопрос