Don't panic if there's no index buffer and call draw (#1229)

This commit is contained in:
João Capucho 2021-01-12 22:05:13 +00:00 committed by GitHub
parent fbf08ac545
commit 478f947768
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 13 deletions

View file

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

View file

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

View file

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