void GeneratePolygonSprite(VertexHelper vh, bool preserveAspect)
{
Vector4 v = GetDrawingDimensions(preserveAspect);
var color32 = color;
int len = sprite.vertices.Length;
var vertices = new List<UIVertex>(len);
Vector2 center = sprite.bounds.center;
Vector2 invExtend = new Vector2(1 / sprite.bounds.size.x, 1 / sprite.bounds.size.y);
for (int i = 0; i < len; i++)
{
// range [-0.5, 0.5] + 0.5 = [0, 1]
float x = (sprite.vertices[i].x - center.x) * invExtend.x + 0.5f;
float y = (sprite.vertices[i].y - center.y) * invExtend.y + 0.5f;
UIVertex vertice = new UIVertex();
vertice.color = color32;
vertice.uv0 = sprite.uv[i];
vertice.position = CalPosition(v, x, y);
vertices.Add(vertice);
}
len = sprite.triangles.Length;
var triangles = new List<int>(len);
for (int i = 0; i < len; i++)
{
triangles.Add(sprite.triangles[i]);
}
vh.Clear();
vh.AddUIVertexStream(vertices, triangles);
}