I have created a custom UI element (that use CanvasRenderer).
Here is code :
Mesh mesh = new Mesh();
Rect drawArea = GetComponent<RectTransform>().rect;
using (VertexHelper helper = new VertexHelper())
{
helper.AddVert(new Vector3(drawArea.xMin, drawArea.yMin), Color.white, Vector2.zero);
helper.AddVert(new Vector3(drawArea.xMin, drawArea.yMax), Color.white, Vector2.zero);
helper.AddVert(new Vector3(drawArea.xMax, drawArea.yMax), Color.white, Vector2.zero);
helper.AddVert(new Vector3(drawArea.xMax, drawArea.yMin), Color.white, Vector2.zero);
helper.AddTriangle(0, 1, 2);
helper.AddTriangle(2, 3, 0);
helper.FillMesh(mesh);
}
var canvas = GetComponent<CanvasRenderer>();
canvas.SetMesh(mesh);
canvas.SetMaterial(Material, null);
It creates a simple rectangle that is same size as rect transform.
It works great. However if I put this inside a scroll view, everything that is outside scroll area / viewport is rendered (while it should be clipped).
The scrolling works as it should (rectangle get scrolled by changing position when scrollbar is used).
I have tried to call `canvas.EnableRectClipping(...);` but without success.