[oden] Extract DrawCall::call
This commit is contained in:
parent
f9648d88cd
commit
0cb5944d0a
1 changed files with 15 additions and 34 deletions
49
src/lib.rs
49
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue