cocos2d-x ios14绘制不完整

我们项目继承了DrawNode,封装了一个绘制斜线的方法,ios14之前的版本显示是正常的,ios之后绘制出现问题,方法实现如下:
void TOPDrawNode::drawQuadTop(const Point &a, const Point &b, const Point &c, const Point &d, Color4B color) {
float overdraw = 1.0f;
unsigned int vertex_count = 6 * 3;
ensureCapacity(vertex_count);

Color4B color1 = color;
color1.a = 0;
Tex2F texCoord = Tex2F(0.0, 0.0);

Vec2 t = b - a;
if (t.y == 0 || t.x == 0) {
    overdraw = 0.5f;
}

if (a.y < d.y) {
    overdraw = 0 - overdraw;
}

V2F_C4B_T2F va = { Vec2(a.x, a.y), color, texCoord };
V2F_C4B_T2F va1 = { Vec2(a.x, a.y + overdraw), color1, texCoord };
V2F_C4B_T2F vb = { Vec2(b.x, b.y), color, texCoord };
V2F_C4B_T2F vb1 = { Vec2(b.x, b.y + overdraw), color1, texCoord };
V2F_C4B_T2F vc = { Vec2(c.x, c.y), color, texCoord };
V2F_C4B_T2F vc1 = { Vec2(c.x, c.y - overdraw), color1, texCoord };
V2F_C4B_T2F vd = { Vec2(d.x, d.y), color, texCoord };
V2F_C4B_T2F vd1 = { Vec2(d.x, d.y - overdraw), color1, texCoord };

V2F_C4B_T2F_Triangle *triangles = (V2F_C4B_T2F_Triangle *) (_buffer + _bufferCount);
V2F_C4B_T2F_Triangle triangle0 = { va, vb, vc };
V2F_C4B_T2F_Triangle triangle1 = { vc, vd, va };
V2F_C4B_T2F_Triangle triangle2 = { va1, vb1, vb };
V2F_C4B_T2F_Triangle triangle3 = { vb, va1, va };
V2F_C4B_T2F_Triangle triangle4 = { vc, vd, vc1 };
V2F_C4B_T2F_Triangle triangle5 = { vc1, vd, vd1 };
triangles[0] = triangle0;
triangles[1] = triangle1;
triangles[2] = triangle2;
triangles[3] = triangle3;
triangles[4] = triangle4;
triangles[5] = triangle5;

_bufferCount += vertex_count;
_dirty = true;

}
可是绘制出来部分地方边缘出现锯齿、绘制不完整只有部分三角形、绘制边缘虚化等现象;

如果只是用这个方法在Layer上绘制是正常的,可是把layer放在ScrollView里就会出现以上情况

请问有哪位大神遇到过,求帮助


layer越大锯齿越严重

void ScoreLayer::layoutScoreLayer() {
_scoreContainer = Layer::create();

int y = 3385*2;
TOPDrawNode* drawnode = TOPDrawNode::create();
Point point1(_sizeViewScore.width/2 , y);
Point point2(_sizeViewScore.width/2 + 150, y + 10);

drawnode->drawQuadTop(point1, point2, Point(point2.x, (float)point2.y+ 6), Point(point1.x, (float)point1.y + 6));

_scoreContainer->addChild(drawnode);

TOPDrawNode *node1 = TOPDrawNode::create();

// int y = _sizeViewScore.height/2;
Point from(596, y);
Point to(1898, y);
Point control1(867, y + 86);
Point control2(1627, y + 86);
node1->drawCubicBezierTop(from, control1, control2, to, 5);
_scoreContainer->addChild(node1);
_scoreContainer->setContentSize(_sizeContent);

// _scrollView->addChild(_scoreContainer, 5);
_scoreContainer->setAnchorPoint(Vec2(0, 0));
_scoreContainer->setPosition(Point(0, -(_sizeContent.height - _sizeViewScore.height)));
addChild(_scoreContainer, 5);

TOPDrawNode* node2 = TOPDrawNode::create();
Point p1(_sizeViewScore.width/2 , _sizeViewScore.height*2/3-50);
Point p2(_sizeViewScore.width/2 + 150, _sizeViewScore.height*2/3 -50 + 10);

node2->drawQuadTop(p1, p2, Point(p2.x, (float)p2.y+ 6), Point(p1.x, (float)p1.y + 6), Color4B::RED);
addChild(node2);

}