diff options
author | 2024-04-06 00:57:59 +0200 | |
---|---|---|
committer | 2024-04-06 00:57:59 +0200 | |
commit | 7eb16452f340fe228e6928b496f8df6e9e86e554 (patch) | |
tree | 2187da46f295a33263e34b1ee1f1c522f34926cc /wgpu | |
parent | 6d3e1d835e1688fbc58622a03a784ed25ed3f0e1 (diff) | |
download | iced-7eb16452f340fe228e6928b496f8df6e9e86e554.tar.gz iced-7eb16452f340fe228e6928b496f8df6e9e86e554.tar.bz2 iced-7eb16452f340fe228e6928b496f8df6e9e86e554.zip |
Avoid generating empty `Frame` geometry in `iced_wgpu`
Diffstat (limited to 'wgpu')
-rw-r--r-- | wgpu/src/geometry.rs | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/wgpu/src/geometry.rs b/wgpu/src/geometry.rs index c8c350c5..b689d2a7 100644 --- a/wgpu/src/geometry.rs +++ b/wgpu/src/geometry.rs @@ -422,24 +422,31 @@ impl BufferStack { } fn into_meshes(self, clip_bounds: Rectangle) -> impl Iterator<Item = Mesh> { - self.stack.into_iter().map(move |buffer| match buffer { - Buffer::Solid(buffer) => Mesh::Solid { - buffers: mesh::Indexed { - vertices: buffer.vertices, - indices: buffer.indices, - }, - clip_bounds, - transformation: Transformation::IDENTITY, - }, - Buffer::Gradient(buffer) => Mesh::Gradient { - buffers: mesh::Indexed { - vertices: buffer.vertices, - indices: buffer.indices, - }, - clip_bounds, - transformation: Transformation::IDENTITY, - }, - }) + self.stack + .into_iter() + .filter_map(move |buffer| match buffer { + Buffer::Solid(buffer) if !buffer.indices.is_empty() => { + Some(Mesh::Solid { + buffers: mesh::Indexed { + vertices: buffer.vertices, + indices: buffer.indices, + }, + clip_bounds, + transformation: Transformation::IDENTITY, + }) + } + Buffer::Gradient(buffer) if !buffer.indices.is_empty() => { + Some(Mesh::Gradient { + buffers: mesh::Indexed { + vertices: buffer.vertices, + indices: buffer.indices, + }, + clip_bounds, + transformation: Transformation::IDENTITY, + }) + } + _ => None, + }) } } |