Multiple meshes vs single mesh performance

Lets say I have a building mesh with empty holes for windows, I then have my window frames as a separate mesh.

In terms of performance, would I be better importing the building model with all of the window frames (lets say x 10) already placed, essentially making it all one mesh, or is there any performance benefit/downside to importing a single mesh of the windowframes and
pasting multiple copies and placing them within Unreal.

To simplify (hopefully) -

1 x building mesh with window frames included


1 x building mesh with 10 x copies of a single window frame


I am FAR from being expert, but i had, well i still do same concerns as you. I’ve spent considerable time to do research on this topic and my conclusion is: ‘it depends’. :slight_smile:

From performance poit of view is better to have one mesh. But, if you want some variety in your level, you may want to do some compromise.
This may not work for you as it works for me, but i have building without windows as one mesh and then i have second mesh with all the windows merged together. I have multiple versions of the windows, some with small balconies and so on. So with one buiilding and 3-4 windows variants you’ll get more variability. if that is what you need.

A single mesh only has one draw call. Multiple meshes use more draw calls, wasting CPU resources. However, since the entire object gets called in and rendered, you can save GPU power by using more meshes and culling out the ones you don’t need. But since GPUs nowadays are REALLY good at rendering polygons, if you know you’re building with all the windows only uses 10,000 polygons, then there’s no reason why making it all one mesh could possibly be considered a bad idea. You can have millions of polygons and still achieve 60+ FPS nowadays on a $130 GTX 950.

All things considered, you can really go both ways with this. If your game is already using complex materials and particle effects and lighting, then you may want to save the GPU a little bit and split things up, putting a bit more load on the CPU for draw calls. But if you’re making a simple game that doesn’t use much polygons, then call it in as one object and use the performance benefit for improving your draw distance.