summaryrefslogtreecommitdiffstats
path: root/wgpu/src/quad.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-02-07 19:26:41 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-02-24 13:37:30 +0100
commit77b59496b0a138510938aca8367572e08019ddb6 (patch)
treeaab2242b83e8b940f2a93584066839ab24c000e6 /wgpu/src/quad.rs
parenta970f34cb4968bfe913c1f77b5087f44f29aba8a (diff)
downloadiced-77b59496b0a138510938aca8367572e08019ddb6.tar.gz
iced-77b59496b0a138510938aca8367572e08019ddb6.tar.bz2
iced-77b59496b0a138510938aca8367572e08019ddb6.zip
Fix rendering order for `quad::Pipeline`
Diffstat (limited to 'wgpu/src/quad.rs')
-rw-r--r--wgpu/src/quad.rs22
1 files changed, 13 insertions, 9 deletions
diff --git a/wgpu/src/quad.rs b/wgpu/src/quad.rs
index ebbe7a9d..e4173b12 100644
--- a/wgpu/src/quad.rs
+++ b/wgpu/src/quad.rs
@@ -17,7 +17,8 @@ pub struct Pipeline {
vertices: wgpu::Buffer,
indices: wgpu::Buffer,
layers: Vec<Layer>,
- current_layer: usize,
+ prepare_layer: usize,
+ render_layer: usize,
}
impl Pipeline {
@@ -139,7 +140,8 @@ impl Pipeline {
vertices,
indices,
layers: Vec::new(),
- current_layer: 0,
+ prepare_layer: 0,
+ render_layer: 0,
}
}
@@ -151,23 +153,22 @@ impl Pipeline {
transformation: Transformation,
scale: f32,
) {
- if self.layers.len() <= self.current_layer {
+ if self.layers.len() <= self.prepare_layer {
self.layers.push(Layer::new(device, &self.constant_layout));
}
- let layer = &mut self.layers[self.current_layer];
+ let layer = &mut self.layers[self.prepare_layer];
layer.prepare(device, queue, instances, transformation, scale);
- self.current_layer += 1;
+ self.prepare_layer += 1;
}
pub fn render<'a>(
- &'a self,
- layer: usize,
+ &'a mut self,
bounds: Rectangle<u32>,
render_pass: &mut wgpu::RenderPass<'a>,
) {
- if let Some(layer) = self.layers.get(layer) {
+ if let Some(layer) = self.layers.get(self.render_layer) {
render_pass.set_pipeline(&self.pipeline);
render_pass.set_scissor_rect(
@@ -184,11 +185,14 @@ impl Pipeline {
render_pass.set_vertex_buffer(0, self.vertices.slice(..));
layer.draw(render_pass);
+
+ self.render_layer += 1;
}
}
pub fn end_frame(&mut self) {
- self.current_layer = 0;
+ self.prepare_layer = 0;
+ self.render_layer = 0;
}
}