Fix rendering order for quad::Pipeline
This commit is contained in:
parent
a970f34cb4
commit
77b59496b0
2 changed files with 15 additions and 14 deletions
|
|
@ -88,14 +88,13 @@ impl Backend {
|
||||||
let mut layers = Layer::generate(primitives, viewport);
|
let mut layers = Layer::generate(primitives, viewport);
|
||||||
layers.push(Layer::overlay(overlay_text, viewport));
|
layers.push(Layer::overlay(overlay_text, viewport));
|
||||||
|
|
||||||
for (i, layer) in layers.iter().enumerate() {
|
for layer in layers {
|
||||||
self.flush(
|
self.flush(
|
||||||
device,
|
device,
|
||||||
queue,
|
queue,
|
||||||
scale_factor,
|
scale_factor,
|
||||||
transformation,
|
transformation,
|
||||||
&layer,
|
&layer,
|
||||||
i,
|
|
||||||
staging_belt,
|
staging_belt,
|
||||||
encoder,
|
encoder,
|
||||||
frame,
|
frame,
|
||||||
|
|
@ -117,7 +116,6 @@ impl Backend {
|
||||||
scale_factor: f32,
|
scale_factor: f32,
|
||||||
transformation: Transformation,
|
transformation: Transformation,
|
||||||
layer: &Layer<'_>,
|
layer: &Layer<'_>,
|
||||||
layer_index: usize,
|
|
||||||
staging_belt: &mut wgpu::util::StagingBelt,
|
staging_belt: &mut wgpu::util::StagingBelt,
|
||||||
encoder: &mut wgpu::CommandEncoder,
|
encoder: &mut wgpu::CommandEncoder,
|
||||||
target: &wgpu::TextureView,
|
target: &wgpu::TextureView,
|
||||||
|
|
@ -154,8 +152,7 @@ impl Backend {
|
||||||
depth_stencil_attachment: None,
|
depth_stencil_attachment: None,
|
||||||
});
|
});
|
||||||
|
|
||||||
self.quad_pipeline
|
self.quad_pipeline.render(bounds, &mut render_pass);
|
||||||
.render(layer_index, bounds, &mut render_pass);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if !layer.meshes.is_empty() {
|
if !layer.meshes.is_empty() {
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,8 @@ pub struct Pipeline {
|
||||||
vertices: wgpu::Buffer,
|
vertices: wgpu::Buffer,
|
||||||
indices: wgpu::Buffer,
|
indices: wgpu::Buffer,
|
||||||
layers: Vec<Layer>,
|
layers: Vec<Layer>,
|
||||||
current_layer: usize,
|
prepare_layer: usize,
|
||||||
|
render_layer: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Pipeline {
|
impl Pipeline {
|
||||||
|
|
@ -139,7 +140,8 @@ impl Pipeline {
|
||||||
vertices,
|
vertices,
|
||||||
indices,
|
indices,
|
||||||
layers: Vec::new(),
|
layers: Vec::new(),
|
||||||
current_layer: 0,
|
prepare_layer: 0,
|
||||||
|
render_layer: 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -151,23 +153,22 @@ impl Pipeline {
|
||||||
transformation: Transformation,
|
transformation: Transformation,
|
||||||
scale: f32,
|
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));
|
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);
|
layer.prepare(device, queue, instances, transformation, scale);
|
||||||
|
|
||||||
self.current_layer += 1;
|
self.prepare_layer += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn render<'a>(
|
pub fn render<'a>(
|
||||||
&'a self,
|
&'a mut self,
|
||||||
layer: usize,
|
|
||||||
bounds: Rectangle<u32>,
|
bounds: Rectangle<u32>,
|
||||||
render_pass: &mut wgpu::RenderPass<'a>,
|
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_pipeline(&self.pipeline);
|
||||||
|
|
||||||
render_pass.set_scissor_rect(
|
render_pass.set_scissor_rect(
|
||||||
|
|
@ -184,11 +185,14 @@ impl Pipeline {
|
||||||
render_pass.set_vertex_buffer(0, self.vertices.slice(..));
|
render_pass.set_vertex_buffer(0, self.vertices.slice(..));
|
||||||
|
|
||||||
layer.draw(render_pass);
|
layer.draw(render_pass);
|
||||||
|
|
||||||
|
self.render_layer += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn end_frame(&mut self) {
|
pub fn end_frame(&mut self) {
|
||||||
self.current_layer = 0;
|
self.prepare_layer = 0;
|
||||||
|
self.render_layer = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue