diff --git a/src/lib.rs b/src/lib.rs index 67280cf2..1dc698b6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -511,24 +511,22 @@ impl DrawCall { } } - // pub fn draw<'a>(&'a self, pass: &'a mut wgpu::RenderPass, state: &'a State) { - // if self.draw_start == self.draw_end { - // return; - // } + pub fn draw<'a>(&self, state: &'a State, pass: &mut wgpu::RenderPass<'a>) { + if self.draw_end > self.draw_start { + let texture_id = match self.texture_id { + Some(id) => id, + None => return, + }; - // let texture_id = match self.texture_id { - // Some(id) => id, - // None => return, - // }; + let bind_group = state.sprite_textures.get(&texture_id).unwrap(); + pass.set_bind_group(0, bind_group, &[]); - // let bind_group = state.sprite_textures.get(&texture_id).unwrap(); - // pass.set_bind_group(0, bind_group, &[]); - - // let vb = self.vertex_buffer.borrow(); - // pass.set_bind_group(1, &state.screen_uniform_bind_group, &[]); - // pass.set_vertex_buffer(0, vb.buffer.slice(..)); - // pass.draw(self.draw_start..self.draw_end, 0..1); - // } + let vb = state.get_vertex_buffer(&self.vertex_buffer); + pass.set_bind_group(1, &state.screen_uniform_bind_group, &[]); + pass.set_vertex_buffer(0, vb.buffer.slice(..)); + pass.draw(self.draw_start..self.draw_end, 0..1); + } + } } struct FrameBuilder<'a> { @@ -743,24 +741,7 @@ impl<'a> FrameBuilder<'a> { pass.set_pipeline(&self.state.render_pipeline); for call in &self.draw_calls { - if call.draw_start == call.draw_end { - continue; - } - - let texture_id = match call.texture_id { - Some(id) => id, - None => return, - }; - - let bind_group = self.state.sprite_textures.get(&texture_id).unwrap(); - pass.set_bind_group(0, bind_group, &[]); - - let vb = self.state.get_vertex_buffer(&call.vertex_buffer); - pass.set_bind_group(1, &self.state.screen_uniform_bind_group, &[]); - pass.set_vertex_buffer(0, vb.buffer.slice(..)); - pass.draw(call.draw_start..call.draw_end, 0..1); - - // call.draw(&mut pass, &self.state); + call.draw(&self.state, &mut pass); } }