Индекс 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-порядком. Другими словами, кажется, что все примитивы из всех слоев рисуются в соответствии с их порядком, затем то же самое делается для спрайтов.