Performance: Mesh and mesh renderer
This concept affects how quickly 3D objects appear and update on screen, impacting frame rate and smoothness.
Jump into concepts and practice - no test required
Combine meshes into a single mesh before assigning to one MeshFilter and MeshRenderer.
GameObject combinedObj = new GameObject();
MeshFilter mf = combinedObj.AddComponent<MeshFilter>();
MeshRenderer mr = combinedObj.AddComponent<MeshRenderer>();
mf.mesh = combinedMesh;GameObject obj = new GameObject(); MeshFilter mf = obj.AddComponent<MeshFilter>(); MeshRenderer mr = obj.AddComponent<MeshRenderer>(); mf.mesh = complexMesh; // Repeat for many objects with separate MeshRenderer components
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Multiple MeshRenderers with complex meshes | N/A | N/A | High GPU draw calls and vertex processing | [X] Bad |
| Single MeshRenderer with combined mesh | N/A | N/A | Low GPU draw calls, optimized vertex processing | [OK] Good |
Mesh in Unity?var mesh = new Mesh();
mesh.vertices = new Vector3[] { new Vector3(0,0,0), new Vector3(1,0,0), new Vector3(0,1,0) };
mesh.triangles = new int[] { 0, 1, 2 };
Debug.Log(mesh.vertexCount);Mesh mesh = new Mesh();
mesh.vertices = new Vector3[] { new Vector3(0,0,0), new Vector3(1,0,0), new Vector3(0,1,0) };
mesh.triangles = new int[] { 0, 1 };
MeshFilter mf = gameObject.AddComponent<MeshFilter>();
mf.mesh = mesh;
gameObject.AddComponent<MeshRenderer>();