[oden] Extract DrawCall::call

This commit is contained in:
John Doty 2023-08-07 10:10:06 -07:00
parent f9648d88cd
commit 0cb5944d0a

View file

@ -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);
}
}