Generating single triangle meshes at run-time

I’m working on a project that needs to create single triangle meshes where each vertex value is determined at run time by the user. The instance of this triangle needs to maintain its world position as well as the three vertices (modifying this post creation will change affect the mesh) that form the mesh. Using tutorials I’ve come up with the code below.

The problem with this is that it begins to lag once I generate 2-3 instances of it. Does anybody know what’s causing this slowdown? Also, as an alternative would it be possible to have a single triangle prefab and manipulate the individual vertices on the mesh without it affecting all other instances?

	MeshFilter meshFilter = GetComponent<MeshFilter>();
	if(meshFilter == null)
	{
		Debug.LogError("MeshFilter not found");
		return;
	}
	
	
	Mesh mesh = meshFilter.sharedMesh;
	if(mesh == null)
	{
		meshFilter.mesh = new Mesh();
		mesh = meshFilter.sharedMesh;
		
	}
	
	
	mesh.Clear ();
	mesh.vertices = new Vector3[]{a,b,c};
	mesh.triangles = new int[]{0,1,2};
	
	mesh.RecalculateNormals();
	mesh.RecalculateBounds();
	mesh.Optimize();

You can use a prefab, but in that case, use meshFilter.mesh rather than sharedMesh, as it will then operate on this instance’s copy of the mesh.

Since it’s just a triangle, you probably don’t need to call Optimize.