diff options
Diffstat (limited to 'engine/src/rendering/backend/opengl/graphics_mesh.rs')
| -rw-r--r-- | engine/src/rendering/backend/opengl/graphics_mesh.rs | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/engine/src/rendering/backend/opengl/graphics_mesh.rs b/engine/src/rendering/backend/opengl/graphics_mesh.rs index fba60c8..f6b7d56 100644 --- a/engine/src/rendering/backend/opengl/graphics_mesh.rs +++ b/engine/src/rendering/backend/opengl/graphics_mesh.rs @@ -12,8 +12,12 @@ use opengl_bindings::MaybeCurrentContextWithFns as GlCurrentContextWithFns; use crate::mesh::vertex_buffer::VertexAttrProperties as MeshVertexAttrProperties; use crate::mesh::{Mesh, VertexAttrType}; -use crate::rendering::shader::VertexDescription as ShaderVertexDescription; +use crate::rendering::shader::{ + VertexDescription as ShaderVertexDescription, + VertexInputSemName, +}; use crate::rendering::MeshUsage; +use crate::util::DisplaySlice; const VERTEX_BUF_BINDING_INDEX: u32 = 0; @@ -171,7 +175,9 @@ impl GraphicsMesh for vertex_attr_props in &self.vertex_attr_props { let Some(vertex_input_desc) = shader_vertex_desc.inputs.iter().find(|vertex_input_desc| { - *vertex_input_desc.name == vertex_attr_props.name + vertex_input_desc + .semantic_name + .matches_vertex_label(&vertex_attr_props.label) }) else { continue; @@ -221,15 +227,15 @@ impl GraphicsMesh .inputs .iter() .filter_map(|vertex_input_desc| { - if self - .vertex_attr_props - .iter() - .any(|prop| prop.name == *vertex_input_desc.name) - { + if self.vertex_attr_props.iter().any(|props| { + vertex_input_desc + .semantic_name + .matches_vertex_label(&props.label) + }) { return None; } - Some(vertex_input_desc.name.clone()) + Some(vertex_input_desc.semantic_name.clone()) }) .collect(), )); @@ -262,8 +268,11 @@ pub enum Error #[derive(Debug, thiserror::Error)] pub enum VertexAttrsUpdatingError { - #[error("Mesh is missing vertex attribute(s) required by shader: {0:?}")] - MissingVertexAttrs(Vec<Box<str>>), + #[error( + "Mesh is missing equivalent vertex attribute(s) for shader's vertex inputs: {}", + DisplaySlice::new(.0) + )] + MissingVertexAttrs(Vec<VertexInputSemName>), } fn mesh_usage_to_gl_buffer_usage(mesh_usage: MeshUsage) -> GlBufferUsage |
