mirror of
https://github.com/bevyengine/bevy
synced 2025-02-16 22:18:33 +00:00
Don't panic if there's no index buffer and call draw (#1229)
This commit is contained in:
parent
fbf08ac545
commit
478f947768
3 changed files with 24 additions and 13 deletions
|
@ -115,6 +115,13 @@ impl Draw {
|
|||
});
|
||||
}
|
||||
|
||||
pub fn draw(&mut self, vertices: Range<u32>, instances: Range<u32>) {
|
||||
self.render_command(RenderCommand::Draw {
|
||||
vertices,
|
||||
instances,
|
||||
});
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn render_command(&mut self, render_command: RenderCommand) {
|
||||
self.render_commands.push(render_command);
|
||||
|
|
|
@ -278,7 +278,7 @@ impl Mesh {
|
|||
}
|
||||
}
|
||||
|
||||
fn count_vertices(&self) -> usize {
|
||||
pub fn count_vertices(&self) -> usize {
|
||||
let mut vertex_count: Option<usize> = None;
|
||||
for (attribute_name, attribute_data) in self.attributes.iter() {
|
||||
let attribute_len = attribute_data.len();
|
||||
|
@ -387,19 +387,21 @@ pub fn mesh_resource_provider_system(
|
|||
for changed_mesh_handle in changed_meshes.iter() {
|
||||
if let Some(mesh) = meshes.get(changed_mesh_handle) {
|
||||
// TODO: check for individual buffer changes in non-interleaved mode
|
||||
let index_buffer = render_resource_context.create_buffer_with_data(
|
||||
BufferInfo {
|
||||
buffer_usage: BufferUsage::INDEX,
|
||||
..Default::default()
|
||||
},
|
||||
&mesh.get_index_buffer_bytes().unwrap(),
|
||||
);
|
||||
if let Some(data) = mesh.get_index_buffer_bytes() {
|
||||
let index_buffer = render_resource_context.create_buffer_with_data(
|
||||
BufferInfo {
|
||||
buffer_usage: BufferUsage::INDEX,
|
||||
..Default::default()
|
||||
},
|
||||
&data,
|
||||
);
|
||||
|
||||
render_resource_context.set_asset_resource(
|
||||
changed_mesh_handle,
|
||||
RenderResourceId::Buffer(index_buffer),
|
||||
INDEX_BUFFER_ASSET_INDEX,
|
||||
);
|
||||
render_resource_context.set_asset_resource(
|
||||
changed_mesh_handle,
|
||||
RenderResourceId::Buffer(index_buffer),
|
||||
INDEX_BUFFER_ASSET_INDEX,
|
||||
);
|
||||
}
|
||||
|
||||
let interleaved_buffer = mesh.get_vertex_buffer_data();
|
||||
|
||||
|
|
|
@ -152,6 +152,8 @@ pub fn draw_render_pipelines_system(
|
|||
|
||||
if let Some(indices) = index_range.clone() {
|
||||
draw.draw_indexed(indices, 0, 0..1);
|
||||
} else {
|
||||
draw.draw(0..mesh.count_vertices() as u32, 0..1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue