diff --git a/scene/resources/immediate_mesh.cpp b/scene/resources/immediate_mesh.cpp index b086d829b..887525eb4 100644 --- a/scene/resources/immediate_mesh.cpp +++ b/scene/resources/immediate_mesh.cpp @@ -256,6 +256,12 @@ void ImmediateMesh::surface_end() { } } + int sc = VisualServer::get_singleton()->mesh_get_surface_count(mesh); + + for (int i = 0; i < sc; ++i) { + VisualServer::get_singleton()->mesh_remove_surface(mesh, 0); + } + VisualServer::get_singleton()->mesh_add_surface(mesh, format, static_cast(active_surface_data.primitive), surface_array_create_cache, vertices.size(), PoolByteArray(), 0, aabb); if (active_surface_data.material.is_valid()) {