summaryrefslogtreecommitdiffstats
path: root/wgpu/src/triangle.rs
diff options
context:
space:
mode:
Diffstat (limited to 'wgpu/src/triangle.rs')
-rw-r--r--wgpu/src/triangle.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/wgpu/src/triangle.rs b/wgpu/src/triangle.rs
index 28051edf..6e64e189 100644
--- a/wgpu/src/triangle.rs
+++ b/wgpu/src/triangle.rs
@@ -186,6 +186,7 @@ impl Pipeline {
let mut num_solids = 0;
let mut num_gradients = 0;
+ let mut last_is_solid = None;
for (index, mesh) in meshes.iter().enumerate() {
let clip_bounds = (mesh.clip_bounds * scale_factor).snap();
@@ -199,17 +200,35 @@ impl Pipeline {
match mesh.style {
mesh::Style::Solid(_) => {
+ if !last_is_solid.unwrap_or(false) {
+ self.pipelines
+ .solid
+ .set_render_pass_pipeline(&mut render_pass);
+
+ last_is_solid = Some(true);
+ }
+
self.pipelines.solid.configure_render_pass(
&mut render_pass,
num_solids,
);
+
num_solids += 1;
}
mesh::Style::Gradient(_) => {
+ if last_is_solid.unwrap_or(true) {
+ self.pipelines
+ .gradient
+ .set_render_pass_pipeline(&mut render_pass);
+
+ last_is_solid = Some(false);
+ }
+
self.pipelines.gradient.configure_render_pass(
&mut render_pass,
num_gradients,
);
+
num_gradients += 1;
}
};