我有两层。每个层都有一个原始绘图,使用 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 顺序值时。当我将一个精灵添加到其中一个图层中时,奇怪的事情就开始了。如果我 addChild 一个 sprite,那么 sprite 位于该层的图元之上,而不仅仅是该层。即使该层具有较小的 Z 索引,无论如何它的精灵在其他层的图元之上,而其图元在另一个图元形状之下 - 正如预期的那样。这个可以吗?我应该怎么理解这个?如果我想在所有精灵之上绘制图元怎么办?
编辑:
我可以使用以下命令操纵他们的顺序,但不能操纵绘制顺序:
CCDirector::getInstance()->setDepthTest(true);
myLayer->setVertexZ(-1);
但我不明白为什么 Z 顺序较小的图层中的精灵比 Z 顺序较大的图层的图元绘制得晚。换句话说,似乎所有图层中的所有图元都是根据它们的顺序绘制的,然后对精灵进行相同的绘制。