我们项目继承了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里就会出现以上情况
请问有哪位大神遇到过,求帮助